Probleme mit SQL_Datenbankanbindung
-
Wieviele Klassen hast du jetzt?
Ich bin ausgegangen von:
Ein Recordset
Ein DialogDa wäre der Weg:
Recordset.Variable -> Dialog.VariableFürEinControl -> UpdateData(FALSE)
oder eben
UpdateData(TRUE) -> Dialog.VariableFürEinControl -> Recordset.Variable
-
hallo
mit mehre tabbellen ist einfach und du sollst keine panik haben.du kannst ein neuen Projekt legen und normal mit einem DB verbinden und nur mit einer Tabelle. und fertig.
willst du 2te tabelle dann auf dem klassen ansicht -> rechtmaustatste und klassen einfügen MFC ODBC Consumer dann wählst du die 2te tablle.
der assistenten macht alles für dich .
vergiss hen Header einzufügen in deinem view kalsse#include"neueklasse.h"
-
das kannst du denn machen für beliebige tabellen.
aber wichtig
DU DARFST NICHT
wenn du eine klasse a hat include b
darfst du nicht klasse b nachher include klasse a...sonst salat von Fehler
-
dokdok schrieb:
aber wichtig
DU DARFST NICHT
wenn du eine klasse a hat include b
darfst du nicht klasse b nachher include klasse a...sonst salat von FehlerLösung: http://www.c-plusplus.net/forum/viewtopic-var-t-is-112693.html
-
Frage?
kann man funktion von klasse a in klasse b rufen ? und auch funktion von klasse b in klasse a rufen?
ist es das eine mit include"xxxx.h" und das andere mit class Cklass;
wird mir intressiren. ich probiere mal
-
dokdok schrieb:
Frage?
kann man funktion von klasse a in klasse b rufen ? und auch funktion von klasse b in klasse a rufen?
ist es das eine mit include"xxxx.h" und das andere mit class Cklass;
wird mir intressiren. ich probiere malDas sollte funktionieren. Ist ja hinter dem Link erklärt.
-
estartu_de schrieb:
Wieviele Klassen hast du jetzt?
Ich bin ausgegangen von:
Ein Recordset
Ein DialogDa wäre der Weg:
Recordset.Variable -> Dialog.VariableFürEinControl -> UpdateData(FALSE)
oder eben
UpdateData(TRUE)-> Dialog.VariableFürEinControl -> Recordset.VariableIch habe 4 Tabellen somit 4 Klassen abgeleitet von CRecordSet und einmal mein Dialogfenster(Basisklasse CFormView)
-
dokdok schrieb:
hallo
mit mehre tabbellen ist einfach und du sollst keine panik haben.du kannst ein neuen Projekt legen und normal mit einem DB verbinden und nur mit einer Tabelle. und fertig.
willst du 2te tabelle dann auf dem klassen ansicht -> rechtmaustatste und klassen einfügen MFC ODBC Consumer dann wählst du die 2te tablle.
der assistenten macht alles für dich .
vergiss hen Header einzufügen in deinem view kalsse#include"neueklasse.h"
Ja denn kann ich zwar über m_pSet die eine Tabelle auswählen muss für die anderen Tabellen es dann aber auch anders machen.
-
reda schrieb:
Ja denn kann ich zwar über m_pSet die eine Tabelle auswählen muss für die anderen Tabellen es dann aber auch anders machen.
Dann guck doch mal, wie das mit dem m_pSet funktioniert und bau dir m_pSet2 bis n.
Du musst da nix anders oder besonderes machen. Nur gucken, wie der Assistent das macht und abschreiben.
-
[cpp]public:
//{{AFX_DATA(CTest3View)
enum { IDD = IDD_TEST3_FORM };
CTest3Set* m_pSet;
//}}AFX_DATADas steht in der *View.h
Und denn ist sie halt noch in den ganzen DoDataExchange,usw. vorhanden.
Ich habe eben einfach alles abgeschrieben und da halt mit ein getragen wo m_pSet ist. Denn sagt er mir oben in der Header Datei fehlendes ; * O_o
Und denn fehlende Speicherklasse für meine 2 Set Klasse und fehlende Speicherklasse für m_pSet2
-
reda schrieb:
Und denn fehlende Speicherklasse für meine 2 Set Klasse und fehlende Speicherklasse für m_pSet2
include vergessen!
-
Hmm habs grad gefunden. Sie fehlten in der test3.cpp.....
Nun fehlten sie noch in der.doc datei
Also das programm kann ich nun zwar starten bloss es kommt dieser nette fehlerbildschrim
http://img362.imageshack.us/img362/8308/fehler0ek.th.jpg
-
reda schrieb:
Also das programm kann ich nun zwar starten bloss es kommt dieser nette fehlerbildschrim
http://img362.imageshack.us/img362/8308/fehler0ek.th.jpgDas ist kein Fehler.
http://www.c-plusplus.net/forum/viewtopic-var-t-is-120832.html
-
Er zeigt mir im Debug denn das an
if (pOb == NULL) { TRACE0("ASSERT_VALID fails with NULL pointer.\n"); if (AfxAssertFailedLine(lpszFileName, nLine)) AfxDebugBreak(); return; // quick escape }
Auf AfxDebugBreak ist der Pfeil gesetzt. Sagt mir bloss nix
-
Das heißt einfach nur "in der Debugversion hier anhalten". So in etwa jedenfalls.
pOb ist NULL, dürfte es aber nicht sein.
Verfolge mal im Callstack, wo du es hättest initialisieren müssen.
-
Hmm hab mir zwar dein Artikel über Debug durchgelesen,steig mit dem Callstack noch ned ganz durch wie ich nun da seh wo ich pOb initalisieren sollte
Bin mit Debuggen null vertraut sry
-
Welche ist denn die erste Funktion im Callstack, die von dir ist? Oft liegt genau da der Fehler.
Wenn du es wirklich nicht findest, müsstest du am besten mal ein Beispielprojekt machen, damit man sich das genauer angucken kann.
Oder kannst du das eigentliche und die Datenbnk rausgeben?
-
Zur Zeit teste ich das ganze eh nur an nem Beispiel projekt
Die Datenbank dazu könnte ich auch rausgeben bloss erst heute abend, bin nun unterwegs.
So sieht mein Callstack aus.
-
Ich habe eh erst Montag wieder ein VC.
Zeig mal CTest3View::OnInitialUpdate und markiere Zeile 74. (Klick einfach auf die Zeile im Callstack doppelt und mach nen Kommentar an die Zeile, wo der grüne Pfeil ist.)
-
void CTest3View::OnInitialUpdate() { m_pSet = &GetDocument()->m_test3Set; CRecordView::OnInitialUpdate(); GetParentFrame()->RecalcLayout(); //markierte Zeile ResizeParentToFit(); m_pSet2 = &GetDocument()->m_KinderSet; CRecordView::OnInitialUpdate(); GetParentFrame()->RecalcLayout(); ResizeParentToFit(); }