Paules-PC-Forum.de Anzeige:

Microsoft Windows Intune: PC-Verwaltung und -Sicherheit in der Cloud: Updateverwaltung, Anti-Virus und vieles mehr!


Zurück   Paules-PC-Forum.de > Programmierung > C/C++, Visual C++, Visual C++.NET

C/C++, Visual C++, Visual C++.NET Fragen und Antworten zu C/C++, Visual C++ und Visual C++.NET

EM-Tippspiel

Paule bei Facebook


Paule bei Twitter


Letzte Forenthemen
Gehe zum ersten neuen Beitrag PPF - Shoppingwahn
Aufrufe: 50849, Antworten: 1390
Gehe zum ersten neuen Beitrag PPF - Spiel "Wörter weiter...
Aufrufe: 26615, Antworten: 4194
Gehe zum ersten neuen Beitrag Windows Oberfläche (Schrift,...
Aufrufe: 176, Antworten: 10
Gehe zum ersten neuen Beitrag Von Live CD Windowspfad...
Aufrufe: 63, Antworten: 5
Gehe zum ersten neuen Beitrag TabCtrl
Aufrufe: 121, Antworten: 12
Gehe zum ersten neuen Beitrag Rechner fährt herunter,...
Aufrufe: 93, Antworten: 4
Gehe zum ersten neuen Beitrag Dateien lassen sich nicht...
Aufrufe: 17, Antworten: 2
Gehe zum ersten neuen Beitrag Suche Programm um Werbung zu...
Aufrufe: 49, Antworten: 2
Gehe zum ersten neuen Beitrag McAfee AVERT Stinger...
Aufrufe: 13, Antworten: 0
Gehe zum ersten neuen Beitrag Sticky Password 6.0.2...
Aufrufe: 25, Antworten: 0
Zeige:





Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 18.02.2006, 16:17   #1 (Direktlink)
Ist öfter hier
 
Benutzerbild von Don_Pazo
 
Registriert seit: 01.09.2005
Beiträge: 83
Standard MFC SQL-Problem

Hallo,
ich habe in meinem Programm eine Klasse CdbKurseStatus (von CRecordset) erstelt. Die Klasse hat nur eine Tabelle von der DB zugewiesen bekommen und zwar "KurseStatus".

Code:
--------------------------
| ID | Kurse | Status | IP |
--------------------------
Also in der Klasse CdbKurseStatus habe ich die Variablen m_ID, m_Kurse, m_Status und m_IP.
Meinen Problem ist wenn ich nur nach dem einen Spalte abfrage (im Beispiel "Status") dann bekomme ich die Fehlermeldung "Ungültiger Deskriptorindex". Warum ??
Code:
const CString strSQLKurse = "SELECT DISTINCT Status FROM KurseStatus";
CdbKurseStatus rsKurseStatus(NULL);	// von CRecordset

// Tabelle "KurseStatus" mit SQL-Anweisung öffnen
rsKurseStatus.Open(CRecordset::snapshot, _T(strSQLKurse), CRecordset::none);

...// Code
rsKurseStatus.Close();
Und meine Frage ist, kann ich bzw. wie kann ich nur nach diese eine Spalte in der Tabelle abfragen ??[/b]
__________________
www.nenov.de
Don_Pazo ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 18.02.2006, 17:14   #2 (Direktlink)
Dauergast
 
Registriert seit: 06.05.2004
Ort: Düsseldorf
Beiträge: 1.672
Standard

Probier mal statt CRecordset::snapshot, oder probier mal
Open(CRecordset::dynaset,"SELECT DISTINCT Status FROM KurseStatus;")
, und dieses rsKurseStatus(NULL); sicher das der Wert der Datenbank stimmt, weill normalerweise müsste man da einen Zeiger auf ein Datenbankobjekt angeben. (Bei DAO)

Und wo genau taucht der Fehler überhaupt auf?
wenn das die Zeile mit Open ist, vielleicht ist die nächste Zeile falsch, nicht die von dir angegebene? Lass auch mal das DÍSTINCT weg.
lastwebpage ist offline   Mit Zitat antworten
Alt 18.02.2006, 17:47   #3 (Direktlink)
Ist öfter hier
 
Benutzerbild von Don_Pazo
 
Registriert seit: 01.09.2005
Beiträge: 83
Standard

Zitat:
CRecordset( CDatabase* pDatabase = NULL);

Parameter:
• pDatabase:
Zeiger auf ein Objekt vom Typ CDatabase oder der Wert NULL. Wenn der Wert nicht NULL ist und die Open- Methode des Datenbankobjektes nicht aufgerufen wurde versucht das Recordsetobjekt die Datenbank zu öffnen während des aufrufs von CRecordset::Open. Wenn sie NULL übergeben wird ein Datenbankobjekt angelegt und anhand der Verknüpfungsinformationen mit einer Datenbank verbunden.

Bemerkung:
Legt ein CRecordset object an.
Übergeben sie NULL an den CRecordset- Konstruktor damit automatisch ein CDatabase Objekt angelegt und verknüpft wird. Dies ist eine nützliche Abkürzung um nicht im Vorraus ein Datenbankobjekt anlegen und verknüpfen zu müssen.
Mit dieser Code funktioniert, aber es ist nicht das was ich brauche:
Code:
const CString strSQLKurse = "SELECT * FROM KurseStatus";
CdbKurseStatus rs(NULL);
rs.Open(CRecordset::snapshot, _T(strSQLKurse), CRecordset::none);
	
while(!rs.IsEOF()){
   MessageBox(rs.m_Status);
   rs.MoveNext();
}
rs.Close();
Ich glaube das Problem liegt daran, dass in der Klasse CdbKurseStatus 4 Variablen deklariert sind. Also für jede Spalte eine.
Mit eine
Code:
"SELECT DISTINCT Status FROM KurseStatus;
Anweisung bewirke ich ,das nur eine Variable (m_Status) ein Wert zugewiesen bekomt und die anderen 3 Variablen sind undefiniert.
Ich glaube das ist das Problem. Ich hoffe aber, dass ich mich irre.
Weist jemand wie das geht??
__________________
www.nenov.de
Don_Pazo ist offline   Mit Zitat antworten
Alt 18.02.2006, 17:48   #4 (Direktlink)
Ist öfter hier
 
Benutzerbild von Don_Pazo
 
Registriert seit: 01.09.2005
Beiträge: 83
Standard

__________________
www.nenov.de
Don_Pazo ist offline   Mit Zitat antworten
Alt 18.02.2006, 18:16   #5 (Direktlink)
Dauergast
 
Registriert seit: 06.05.2004
Ort: Düsseldorf
Beiträge: 1.672
Standard

Ist das von irgendeinem Assistenten automatisch erzeugter code ?
lastwebpage ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 18.02.2006, 18:23   #6 (Direktlink)
Ist öfter hier
 
Benutzerbild von Don_Pazo
 
Registriert seit: 01.09.2005
Beiträge: 83
Standard

Nein die Code ist von mir. Der Assistenten habe ich bei dem Erstellung von CdbKurseStatus genutzt.
Übrigens ich habe eine ODBC Verbindung keine DAO.
__________________
www.nenov.de
Don_Pazo ist offline   Mit Zitat antworten
Alt 18.02.2006, 20:10   #7 (Direktlink)
Dauergast
 
Registriert seit: 06.05.2004
Ort: Düsseldorf
Beiträge: 1.672
Standard

Hast du mal nach anderen Werten für die Parameter 1 und 3 von Open gesucht, und diese ausprobiert? z.B. dynaset,Forwardonly,readonly etc. ?
lastwebpage ist offline   Mit Zitat antworten
Alt 19.02.2006, 11:28   #8 (Direktlink)
Ist öfter hier
 
Benutzerbild von Don_Pazo
 
Registriert seit: 01.09.2005
Beiträge: 83
Standard

Ja schon. Ich bin mir aber sicher dass es nicht daran liegt.
Sondern, ich habe in meinem Recordset Klassse 4 Variablen und somit kann ich nicht nur nach eine Spalte abfragen. Ich muss entweder ein neuen Recordset Klasse erstellen und die übrigen 3 Variablen löschen also alle auser m_Status oder (dass was ich gemacht habe) ich habe eine neue Tabelle hinzugefügt nur mit ID und Status. Und jetzt mach ich einfach weiter
__________________
www.nenov.de
Don_Pazo ist offline   Mit Zitat antworten
Antwort

  Paules-PC-Forum.de > Programmierung > C/C++, Visual C++, Visual C++.NET

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an




Alle Zeitangaben in WEZ +2. Es ist jetzt 05:49 Uhr.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Powered by vBCMS® 2.7.0 ©2002 - 2012 vbdesigns.de
(c) Paules-PC-Forum.de

::: Impressum :::

Search Engine Optimization by vBSEO 3.3.2