И так делаем прогу которая только просматривает dbf файлы.
Создаем текстовый файл
[ODBC]
DRIVER=Microsoft dBase Driver (*.dbf)
UID=admin
UserCommitSync=Yes
Threads=3
Statistics=0
SafeTransactions=0
PageTimeout=600
MaxScanRows=8
MaxBufferSize=2048
FIL=dBase 5.0
DriverId=533
Deleted=1
DefaultDir=C:\
CollatingSequence=ASCII
обзываем его dbf.dsn
В С++ Buildere добовляем на форму StringGrid, Edit и два Button'a, но и это еще не все еще ADOQuery и OpenDialog. А и еще ADOConnection
По Button1 двойным кликом и в появившееся окно вставляем
Код: Выделить всё
if(OpenDialog1->Execute())
{
Edit2->Text=OpenDialog1->FileName;
}
Код: Выделить всё
if(Edit1->Text!="")
{
AnsiString fil;
AnsiString Cur=GetCurrentDir();
for(int i=1;i<=StringGrid1->RowCount;i++)
StringGrid1->Rows[i]->Clear();
StringGrid1->RowCount=2;
TStringList *Str=new TStringList;
Str->Add("[ODBC]");
Str->Values["DRIVER"]="Microsoft dBase Driver (*.dbf)";
Str->Values["UID"]="admin";
Str->Values["UserCommitSync"]="Yes";
Str->Values["Threads"]="3";
Str->Values["Statistics"]=0;
Str->Values["SafeTransactions"]=0;
Str->Values["PageTimeout"]=5;
Str->Values["MaxScanRows"]=8;
Str->Values["MaxBufferSize"]=2048;
Str->Values["FIL"]="dBase 5.0";
Str->Values["DriverId"]=533;
Str->Values["Deleted"]=1;
Str->Values["DefaultDir"]=ExtractFileDir(Edit1->Text);
Str->Values["CollatingSequence"]="ASCII";
Str->SaveToFile(Cur+"\\dbf.dsn");
ADOConnection1->Connected=false;
ADOConnection1->ConnectionString="FILE NAME="+Cur+"\\dbf.dsn";
//ADOConnection1->Provider=Cur+"\\dbf.dsn";
ADOConnection1->Connected=true;
TStringGrid *SG=StringGrid1;
ADOQuery1->Connection=ADOConnection1;
ADOQuery1->Close();
ADOQuery1->SQL->Text="SELECT * FROM "+ExtractFileName(Edit1->Text);
ADOQuery1->Open();
SG->ColCount=ADOQuery1->FieldCount+1;
SG->RowCount=ADOQuery1->RecordCount+1;
for(int t=0;t<ADOQuery1->FieldCount;t++)
{
fil=ADOQuery1->Fields->Fields[t]->FieldName;
SG->Cells[t+1][0]=fil;
ADOQuery1->First();
for(int i=1;i<=ADOQuery1->RecordCount;i++)
{
if(ADOQuery1->FieldByName(fil)->AsString!="")
SG->Cells[t+1][i]=ADOQuery1->FieldByName(fil)->AsString;
else
SG->Cells[t+1][i]="NULL";
ADOQuery1->Next();
}
}
delete Str;//гы гы лечиться лечиться и еще раз лечиться. Хотя память ее не жалко - метр туда метр сюда и готова :) совсем готова :( мир ее памяти :((
//Str->Clear();
}
else
Application->MessageBox("Где карта, Билли нам нужна карта","Ошибка",MB_OK);

Я не делал коменты, но готов ответить где что деиться, и без нервов послушать все замечания, кроме:'голосом нудной старушки' для этого там DBGrid есть. СССразу отвечаю от DBGrida отказался ибо прога тогда былабы не так визуальна (всмысли кода тогда бы вообще не надо было)