SQL String, Abfrage auf DB
-
Okay !!
Sorry ich bin leicht gestresst!! Naja ich muss jetzt weg *leider*! trotzdem vielen Dank für euere Hilfe! Werde mich gleich morgen früh nochmal dran versuchen
!!Des muss doch zu schaffen sein
!
Also wünsch euch noch einen schönen Tag !! bis morgen vielleicht
und nochmal Danke!
Gruß Tommy
-
Juten Morgen,
also ich sitze jetzt schon seit 2 Stunden drann aber ich komme nie in meine If-Anweisung rein
CString sqlString,d; sqlString.Format(_T("SELECT Zahl,Text ,Textt FROM Tabelle1 WHERE Zahl = \'%s\'AND ((Text IS NOT NULL) OR (Textt IS NOT NULL))"), nummer); m_pRS->Open(dbOpenDynaset,sqlString); //habe es auch schon mit dbOpentable & dbObenSnapshot probiert AfxMessageBox("Nach dem öffnen"); if( m_pRS->IsEOF( ) ) { COleVariant a; CString c; AfxMessageBox("is in der if bedinung drinnen"); m_pRS->GetFieldValue("Text",a); a = c; AfxMessageBox(c); } }
hat jemadn eine Ahnung woran dass liegen könnte ??
meine Datenbank hat ja nur 1 Tabelle "Tabelle1" und 3 Spalten.
Spalte 1 "zahl" ----> Typ Text (da ich einen Cstring übergebe)
Spalte 2 "Text" ----> Typ Text (beinhaltet entwerder "ja" oder nichts)
Spalte 3 "Textt"----> Typ Text (beinhaltet entwerder "ja" oder nichts)
-
Deine if-Abfrage prüft ab, ob kein Datensatz vorhanden ist. Wenn keiner vorhanden ist, wird dieser in der if-Abfrage ausgelesen.
Richtig wäre abzuprüfen, ob nicht EndOfFile ist.
-
Okay aber daran liegt es nicht :-(! Mit
if( !m_pRS->IsEOF( ) )
geht er auch nicht rein! Also wird meine Abfrage wohl kein ergebnis liefern
-
muss es nicht heißen
if(!m_pRs->EndOfFile)
also ein "!"
-
Also, das ist unlogisch!
Wenn der in eine if nicht reingeht und du nichts veränderst, außer, dass du die Bedingung negierst - dann muss der da rein.
Jetzt hast du zwei Möglichkeiten:
Fröhliches Weiterraten, bis du irgendwann entweder alles in den Müll schmeißt oder den Fehler hast.
Oder du machst es nochmal, und zwar so, wie es mit CRecordset normalerweise gemacht wird.Du erstellst die Klasse mit dem Assi, der ordnet die Tabelle mit den Spalten und ihren Typen zu und du arbeitest mit m_strWhere als Bedingung.
Wenn es dann nicht geht, bin ich mir jedenfalls sicher, dass es nicht an einer seltsamen Klassenkonstruktion liegt.
-
Okay ich weiss nicht warum aber es geht jetzt ich komme mit
if( m_pRS->IsEOF( ) )
rein und mit
if( !m_pRS->IsEOF( ) )
nicht rein!! Des heist ich muss schauen warum meine Abfrage leer ist !!
-
kannst mir ja dein projekt, wenn es nicht so groß ist, mal schicken
(hab grad eh nichts zu tun...)
-
Denkt aber an die Testdaten, ihr solltet auf den selben Testdaten probieren, sonst liegt es nachher daran!
-
kannst mir ja dein projekt, wenn es nicht so groß ist, mal schicken
(hab grad eh nichts zu tun... )welche Adresse??
-
aso
stgt_c ÄT yahoo.de
(DB nicht vergessen..)
(bin aber auch nur Anfänger...)
-
Denkt aber an die Testdaten, ihr solltet auf den selben Testdaten probieren, sonst liegt es nachher daran
yup, das stimmt
-
okay ich schick sie dir
(bin aber auch nur Anfänger... )
ist doch egal! Vielleciht findest du ja den Fehler
-
hast dus schon geschickt
-
soeben weggeschickt
-
hi
kann mir jemand sagen woran das liegt.
beim compilieren kommt
"Unrecogniced database format C:\usw."danke
-
Hast du den Pfad mit \\ geschrieben????
"C:\\VERZEICHNIS\\db2.mdb"
-
bei mir geht der hier raus:
m_pDB->Open(_T("C:\\DB.mdb"));ich schätze mal du kannst nicht einfach so eine DB öffnen, sonder musst das mit dem ODBC -Administrator machen oder
so
m_strConnection = _T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DB.mdb");
kann mich aber auch irren
-
Alo ich habe es jetzt hinbekommen
mit
CString sqlString; sqlString.Format(_T("SELECT Zahl ,Text ,Textt FROM Tabelle1 WHERE Zahl = \'%s\' "), nummer); m_pRS->Open(AFX_DAO_USE_DEFAULT_TYPE,sqlString);
geht es einwandfrei! es lag nicht daran sondern dass problem war dass, der Datentyp für Text oder Zeichen in der Datenbank ein anderer als der Datentyp in C++ war.
Die Lösung für diese Pronlem findet man hier
http://www.c-plusplus.net/forum/viewtopic.php?t=49245&highlight=getfieldpstr
Dankr Trotzdem für eure hilfe !!!
Mfg tommy005
-
Hi Leutz,
ich bins nochmal!
Also ich habe des zwar so hinbekommen wie ich des wollte aber jetzt habe ich bemerkt dass meine Abfrage falsch ist!!Ich muss nicht nur Zahl sondern auch einen text überprüfen!
mein bisheriges SQL Statement
sqlString.Format(_T("SELECT Zahl ,Text ,Textt FROM Tabelle1 WHERE Zahl = \'%s\' "), nummer);
muss also noch erweitert werden! kann mir jemand bei der Syntax helfen??
mit
sqlString.Format(_T("SELECT Zahl ,Text ,Textt FROM Tabelle1 WHERE Zahl = \'%s\' AND Text = \'%s\')", nummer,text);
geht es nicht.
Danke im Voraus.