001
22.06.2005, 14:39 Uhr
~partisan
Gast
|
Ich habe es doch noch geschafft. Falls sich noch jemand dafür interessiert, poste ich hier meinen Lösungsansatz.
Wenn man zB die Anweisung "SELECT COUNT(*) FROM Arbeiter WHERE Gehalt>2000" hat und diese mit ODBC auswerten will, muss man sich eine ODBC Klasse anlegen und erstellt in dieser eine Membervariable, zB long m_Number. Danach setzt man die Variable m_nFields im Konstruktor der ODBC Klasse auf 1. Nun muss man nur noch die Variable zum Datenaustausch freigeben. Das macht man durch folgende Anweisung in der Methode DoFieldExchange: RFX_Long(pFX, _T("[Max]"), m_Number);
(Dem String in den eckigen Klammern kann ein beliebiger Name zugewiesen werden.)
Gesamt sieht die Methode dann so aus.
C++: |
void CMeasurings::DoFieldExchange(CFieldExchange* pFX) { pFX->SetFieldType(CFieldExchange::outputColumn); // Macros such as RFX_Text() and RFX_Int() are dependent on the // type of the member variable, not the type of the field in the database. // ODBC will try to automatically convert the column value to the requested type RFX_Long(pFX, _T("[Number]"), m_Number);
|
Nun muss man nur noch die SQL Anweisung, dem Open übergeben. Das sieht beispielsweise so aus:
C++: |
myMeas.Open(-1,"SELECT Count(Number), Max(Sensor) FROM Measurings");
|
(myMeas ist ein Objekt der ODBC Klasse)
Ich hoffe ich kann damit vielleicht jemandem weiterhelfen. |