URL: https://www.overclockers.at/coding-stuff/c_builder_zugriff_auf_ms_access_119374/page_1 - zur Vollversion wechseln!
ich möchte mit einem kleinen shell-tool daten aus einer access-datei holen, allerdings finde ich kein gutes beispiel das mir das ohne gui-elemente ermöglicht. meine bisherigen zwei versuche liefern immer 0 ergebnisse zurück 
alternativ hab ich auch als zweiten teil diesen code versucht, der auch nicht hinhautCode:int main(int argc, char* argv[]) { TDatabase *conn; hDBICur *cur; conn=new TDatabase(Screen); conn->DatabaseName="test"; conn->DriverName="MSACCESS"; // MSACCESS conn->Params->Append("DATABASE NAME=C:\\atrox\\index.mdb"); conn->Params->Append("PATH=C:\\atrox"); conn->Params->Append("TRACE MODE=0"); conn->Params->Append("LANGDRIVER=Access General"); conn->Params->Append("SQLPASSTHRU MODE=NOT SHARED"); conn->ReadOnly=True; conn->LoginPrompt=False; // conn->Connected=True; // alternative conn->Open(); if (conn->Connected) puts("connected."); // das haut hin! int i=conn->Execute("select key from items;"); // sollte tausende zurückliefern printf("test execute=%d datasetcount=%d\n",i,conn->DataSetCount); for (int i = 0; i < conn->DataSetCount; i++) { char t[1000]; conn->DataSets[i]->GetFieldData(0,t); puts(t); } getchar(); // wait for input return 0; }
Code:TQuery *query=new TQuery(NULL); query->DatabaseName="test"; query->SQL->Append("select * from items"); query->Prepare(); query->ExecSQL(); printf("query fc=%d\n",query->RowsAffected);
Du solltest wohl ein Open() machen, kein ExecSQL, wenn du selectest.
ahh.. und ausserdem darf man sich auf RowsAffected nicht verlassen ! mit query->Eof und query->Next hauts jetzt hin.
thx.
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026