Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » variable SQL Abfragen mit ODBC

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
21.06.2005, 08:29 Uhr
~partisan
Gast


Hi,

ich würde gerne wissen, wie man mit VC++ SQL Abfragen machen kann, die nicht schon vorher durch die Tabellenform vorgegeben sind.
Also sowas wie: SELECT COUNT(*) FROM Arbeiter WHERE Gehalt>2000

Ich weiß wie ich die Abfrage durchführe, Problem ist die Recordset Klasse. Wie muss diese aufgebaut sein, damit diese Abfrage funktioniert? Kann man solche Querys überhaupt durchführen? Wenn ja, kann man diese Klasse mit dem Assistenten erstellen, oder muss alles per Hand gemacht werden?

Ich bin für jeden Tipp dankbar. Habe leider nichts in diesem Forum dazu gefunden, und auch nichts in der MSDN Library.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
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.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: