Problem mit Dialogfeld

LoKi1

Mitglied
Hallo

Ich habe ein Dialogfeld das mittels einer Fremdklasse (MyAppSet) eine ODBC anbindung hat. Ich habe die Fremdvariable m_pSet1 genannt. Nun will ich zwei Membervariablen die auf die ODBC Quelle zeigen mit einander vergleichen... Sobald ich das mache bekomme ich einen Fehler beim starten der Anwendung, jedoch keinen fehler beim Kompilieren.

Fehlermeldung beim Debuggen: Die Ausnahme "unknown software exception" (0x80000003) ist in der Anwendung an der Stelle 0x5f4269c6 aufgetreten.

Kann mir jemand helfen wie ich das zu laufen bekomme?
 
Poste mal den zugehörigen Code. Ich vermute, es geht nochmal um den Vergleich der Daten bei der Anmeldung. ;-]
In diesem Falle musst du die Values der beiden Felder erst auslesen und in einer lokalen Variable zwischenspeichern oder du vergleichst die Ergebnisse der beiden Methoden ohne zwischenspeichern miteinander.
In etwa so:
Code:
if(m_field.GetSingleValue([Feldname]) == m_field2.GetSingleValue([Feldname])
{
    .
    .
    .
}

Gruß

M.
 
Also Code sieht so aus :
Code:
 void CLogin::OnOK() 
{
 
 
if(m_Ebenutzer==m_pSet1->m_Login && m_EPW == m_pSet1->m_PW)
{
MessageBox("BINGO");
}else
{
AfxMessageBox("Bitte geben Sie einen Benutzernamen\nund ein Passwort ein");
}
 
CDialog::OnOK();
}
beim kompilieren keine Fehler oder warnungen aber wenn ich es starte und einen Benutzer eingebe dann kommt das Debug Fenster
 
Zuletzt bearbeitet:
Wie vermutet. Du gibst zwar die Member variablen an, diese haben aber noch keine Werte aus der Datenbank gelesen. Versuchs mal so:
Code:
if(m_Ebenutzer==m_pSet1->m_Login.GetFieldValue() && m_EPW == m_pSet1->m_PW.GetFieldValue())

Kann aich sein, dass du die Methode GetSingelValue() benutzen musst. Lies mal in der MSDN die Beschreibung zu diesen Methoden.
Gruß

M.
 
Ich bekomme da aber einen Fehler : error C2039: 'GetFieldValue' : Ist kein Element von 'CString' was soll ich da jetzt machen? Es gibt auch kein GetSingelValue() zur auswahl nach dem Punktopertator.
 
Zuletzt bearbeitet:
Dann hab ich da wohl was falsch verstanden.

Ich ging davon aus, dass m_pSet1->m_Login und m_pSet1->m_PW Felder des Record Set´s sind und keine CStrings. Bei CStrings funktioniert das natürlich nicht.

Ich sehe das doch richtig, dass du an dieser Stelle vom Benutzer gemachte Angaben mit im Recordset gespeicherten Daten vergleichen willlst, oder?

Und m_pSet1 ist wohl dein Recordset. Wie hast du denn die Membervariablen in der Recordset (oder Database) Klasse hinzugefügt. Als Wert oder als Control?

Wenn diese als Control angelegt sind, sollten die Methoden verfügbar sein.

Gruß

M.
 
Ich bin in den Klassenassiten vom dialogfeld gegangen und bin auf den reiter Klassen-info gegangen. Dort habe ich das dialogfeld der Fremdklasse MyAppSet zugewiesen und die Fremdvariable m_pSet1 gegeben. Dann konnt ich auf die ODBC Quelle zugreifen. (Bitte nicht tot schimpfen. LoKi1 <--- Anfänger)
 
Also ich muss gestehen, so hab ich noch nie gearbeitet... ;-]

Warum bist Du nicht einfach hingegangen und hast die MyAppSet.h in der Dialogklasse includiert, und in der Dialogklasse eine Variable vom Typ MyAppSet erstellt. Damit hast du deine Membervariable, mit welcher du auf die Felder des RecordSets zugreifen kannst.

Und es stehen dir alle Methoden der CRecordSet zur Verfügung (solange MyAppSet von CRecordSet abgeleitet ist, wovon ich ausgehe ;) )

Gruß

M.
 
Ja da gibt es nur ein Problem.... Wenn Ich die Basisklasse auf MyAppSet setze dann kann ich das Dialogfeld nicht vorschalten....
Code:
BOOL CTestApp::InitInstance()
{
.....
 
CLogin x;
 if(x.DoModal() !=IDOK)
  return FALSE;
...
}

Das geht dann nicht.... Zumindestens steht mir DoModal nicht zu verfügung :(
und ich weis dann nicht wie ich den Login Dialog vorschalten soll. Gibts da noch ne andere möglichkeit ?
 
Sorry habs eben falsch verstanden:) (zu schnell gelesen). Aber auch auf diese Weise geht es nicht... Ich bekomme in diesem vorgeschalteten Login-Dialog-Fenster einfach keinen wert. Also ich kann zwar genau die Spallte auf der DB angeben aber es kommt kein wert =( ich weis auch nicht ... Wie wird denn sowas gemacht das kann doch nicht so schwer sein oder
 
Zuletzt bearbeitet:
Zurück