|
답변이 많이 늦어서 죄송합니다 ^^;;
1. wsprintf
wsprintf 라는 것은 그냥 printf라고 생각하시면 될 것 같습니다.
다만 모니터에 "~~~"을 출력하시는게 아니라 배열에 출력을 하는 것이죠.
방식도 printf랑 똑같습니다. 십진수는 %d, 문자열은 %s, 문자는 %c 이런식으로요.
그래서 간단히
char query[256] = {0};
Edit1->Text = "abcde";
AnsiString Field;
Field = "test"; //필드명이 test라고 가정
wsprintf(query, "select * from samsung where %s = '%s';" ,Field, Edit1->Text);
이렇게 query를 날리게 되면 실제 query는
[ select * frim samsung where test='abcde'; ]
이렇게 만들어져 날라가게 된다는 것입니다.
함수 인자로 Field나 Edit1->Text를 받아서 처리하시면 될 것 같습니다.
2. Query 문
레코드라는 것은 행을 의미하는 것이니까
해당 데이타가 있는 한 행을 출력하시려는 거겠죠?
모든 필드를 검색한다 ;;
특출난 방법이 생각이 나질 않는군요.
그냥 where 절에서 가지고 있는 모든 필드를 찾아야 될 듯 싶습니다.
wsprintf(query, "select * from samsung where %s = '%s', %s = '%s', %s = '%s' ;"
,Field1, Edit1->Text, Field2, Edit1->Text, Field3, Edit1->Text);
이런식으로 갯수별로 해 주셔야 될 듯 싶습니다.
필드명이 고정이라면
wsprintf(query, "select * from samsung where test1 = '%s', test2 = '%s', test3 = '%s' ;"
, Edit1->Text, Edit1->Text, Edit1->Text);
(필드명을 test1, test2, test3 이라고 가정)
이런 식으로 하시면 될 듯 싶습니다.
마지막에
ADOQuery1->SQL->Text = query;
이렇게 해 주시면 될 것 같네요.
수고하세요~
빌더2주차 님이 쓰신 글 :
: wsprintf <-- 이게 정확히 뭘 하는건가요?
: (query, "select * from samsung where %s like '%%%s%%';" ,Field, Context); <-- 이것좀 자세히 알려주세요..
: %s 는 문자형이고 %%%s%%는 뭔가요?
: Field <-- 이거는 검색할 단어가 들어있는 필드를 지정하는건가요?
: Context <-- 이건 또 뭔지....ㅠㅠ
:
: 다른건 혼자힘으로 힘들게나마 하고있는데 검색은 통 모르겠네요..
:
: 한번만 더 답변 부탁드리겠습니다...
:
: 현재 DBGrid에 데이터 뿌리는 소스는
:
: AnsiString SQL;
: ADOQuery1->SQL->Clear();
: ADOQuery1->SQL->Text = "select * from Samsung";
: ADOQuery1->Open();
: DataSource1->DataSet = ADOQuery1;
: DBGrid1->DataSource = DataSource1;
:
: 이거 입니다.
:
: 여기서 Edit1 과 button1을 써서 Edit1 에 쓰는 단어로 검색으로 하려고 합니다.
: 특정 필드의 단어를 검색하는게 아니고 모든 필드의 단어를 검색해서 해당되는 단어가 있는 모든 레코드만을 GBGrid1에 뿌리려고 합니다..
|