006
12.01.2003, 21:06 Uhr
Uwe
C/C++ Master (Administrator)
|
Hallo Mike, warum so Umständlich? Lesen wie folgt:
C++: |
#include <odbcinst.h>
void CAccessDlg::OnLesen() { CDatabase db; CString Sql; CString Ausgabe1, Ausgabe2; CString Treiber; CString Dsn; CString Datei = "db1.mdb"; // eine Listbox leeren und dann wieder füllen m_ctrlListBox.ResetContent(); Treiber = GetTreiber(); if( Treiber.IsEmpty() ){ AfxMessageBox("Kein Access-Treiber gefunden"); return; } Dsn.Format("ODBC;DRIVER={%s};DSN='';DBQ=%s",Treiber,Datei);
TRY{ db.Open(NULL,false,false,Dsn); CRecordset rc( &db ); Sql = "SELECT Name, Vorname " "FROM Tabelle1 "; rc.Open(CRecordset::forwardOnly,Sql,CRecordset::readOnly);
while( !rc.IsEOF() ){ rc.GetFieldValue("Name",Ausgabe1); rc.GetFieldValue("Vorname",Ausgabe2); m_ctrlListBox.AddString( Ausgabe1 + ", "+Ausgabe2 ); rc.MoveNext(); } db.Close(); } CATCH(CDBException,Fehler){ AfxMessageBox("Fehler: "+Fehler->m_strError); } END_CATCH; }
CString CAccessDlg::GetTreiber() { char Buf[2001]; WORD BufMax = 2000; WORD BufAus; char *p_Buf = Buf; CString Treiber;
if(!SQLGetInstalledDrivers(Buf,BufMax,& BufAus)) return ""; do{ if( strstr( p_Buf, "Access" ) != 0 ){ Treiber = CString( p_Buf ); break; } p_Buf = strchr( p_Buf, '\0' ) + 1; }while( p_Buf[1] != '\0' );
return Treiber; }
|
Schreiben geht genauso einfach. -- "Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."
Bis dann... Uwe Dieser Post wurde am 12.01.2003 um 21:10 Uhr von Uwe editiert. |