|
음... 물고기 좋아하는 넘입니다.
일단은 DB에서 Next는 프로퍼티가 아니라, 메쏘드입니다.
그러니깐..
Query1->Next();
처럼.. 사용해서야 에러가 나지 않구요...
음.... 그리고
:: strcpy(Str,Query1->Fields->Fields[i]->FieldName.c_str());
요 라인이 이상하거든요..
Fields에서 각 저장된 자료 즉,레코드의 값을 가져오는데..
Query1->Fields->Fields[0]->AsString 나 Query1->FieldByName("NameField")->AsString
이렇게 사용하거든요..
님께서 사용하신 방법은 Column의 이름을 가져오는 방법입니다.
헌데, 루프를 도는 것을 보면.. 저장된 레코드를 가져오게 되어 있거든요..
뭔가 착오가 있으신듯하네요..
그리고, 빌더에서의 AsString이라는 좋은 데이터 타입(!!)이 있습니다.
따라서, 데이터 베이스의 값을 가져오실때..
AnsiString이나 String으로 변수를 정해놓고..
String tmp="";
while(!Query1->Eof)
{
tmp = Query1->Fields->FieldByName("Name")->AsString ;
Memo1->Lines->Add(tmp);
Query1->Next();
}
이렇게 뽑아오면 되여..
그럼 즐프하세요.. ^^
멘땅에 헤딩 님이 쓰신 글 :
: ======빌더를 시작한지 얼마 안되는 초보입니다..
: 혼자서 해결할려고 했는데.. 도저히 제 능력으로는 어렵네여..
: 지정한 파일에 값이 들어가기는 들어가는데 쓰레기값하고 같이 들어가여..
: 제 생각으로는 fwrite부분에서 sizeof부분에서 문제인것 같은데...
: 그리고 또 하나 Query1->Next부분에서 에러가 나거든여..그 부분도 어떻게 안될까여...
:
:
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
: int i, j, ColTemp, Col;
: char StrTemp[20][50];
: char Str[50];
: FILE *fp;
:
: if ((fp = fopen("c:\창길이\samfile.txt", "wt")) == NULL)
: {
: ShowMessage("파일이 열리지 않았습니다.");
: }
:
: Col = Query1->FieldCount; //필드의 갯수
:
: // while(!Query1->Eof)
: // {
: for (i = 0; i < Col; i++)
: {
: strcpy(Str,Query1->Fields->Fields[i]->FieldName.c_str());
: ColTemp = strlen(Str); //쓰레기값을 제거하기 위해 문자열의 길이 파악
: for ( j =0; j < ColTemp; j++)
: {
: StrTemp[i][j] = Str[j];
: }
: }
: fwrite(&StrTemp, sizeof(StrTemp), 1, fp);
:
: // Query1->Next;
: // }
: fclose(fp);
:
:
: }
:
:
:
|