Spalte auslesen
-
Ich hab ja schon ein Formular wo alle Daten ausgegeben werden. Aber ich will jetzt in einem extra Dialog nochmal alle Daten aus einer Spalte zur Übersicht ausgeben.
Damit man weiß, ob Daten fehlen. Und ich kann ja nicht 2 Ausgabefeldern die selbe Membervariable zuweisen oder?
Hab mich zuerst vielleicht n bisschen umständlich ausgedrückt deshalb das Missverständnis.
MFG
-
Desert Storm schrieb:
Und ich kann ja nicht 2 Ausgabefeldern die selbe Membervariable zuweisen oder?
MFGDoch, dies geht, solange beide Variablen in unterschiedlichen Dialogklassen sind.
-
Um eine Liste zu füllen brauchst du auch eine Schleife über die Datensätze.

Ich vermute, du hängst gerade an dem Gedankenfehler, den ziemlich viele haben, wenn sie das Tutorial von MUT durchgearbeitet haben.
Zeig doch mal deinen Versuch.
-
Das ich eine Schleife brauche, weiß ich.
Nur mir ist nicht ganz klar, wie ich die Daten aus dem Dialog, wo das Formular ist und somit auch m_pSet in einen neuen Dialog bekomme. Weil das Listenfeld befindet sich auf einem anderen Dialog und ich weiß nich wie ich von diesem Dialog auf die DB zugreifen kann oder welche anderen Möglichkeiten es gibt die Daten zu übergeben.
MFG
-
Du öffnest in dem zweiten dialog in der OnInit... einfach nochmals eine Datenbankverbindung und liest diese Daten aus.
-
Und wie mache ich das genau? Mit m_pSet->open..... geht das ja nicht weil die Variable da ja nicht deklariert ist und ich net weiß wie ich das sonst machne soll.
MFG
-
Du musst das RecordSet einbinden und dann eine Variable erstellen. Dann kannst du mit Open eine Verbindung zu Datenbank öffnen und die Werte auslesen.
-
Und wie binde ich Recordset ein??
-
Desert Storm schrieb:
Und wie binde ich Recordset ein??
Du hast eine Klasse die von CRecordSet abgeleitet ist. Die Variable m_pSet wurde mittels dieser Klasse deklariert.
Du musst dann nur noch den Header (.h Datei) in den neuen Dialog einbinden.#include "Die_Header_Datei.h"und eine Variable dieses RecordSets erstellen
CMyRecordSet m_pSet;Anschließend kannst du dann wie in dem vorherigen Dialog damit arbeiten.
-
OK hab n bisschen getüftelt und folgenden Code. Er funktioniert leider noch nicht ganz, da ich nicht weiß wie ich denn mit m_pSet auf die Spalte zugreifen soll.
CMyRecordSet m_pSet; m_pSet.Open(CMyRecordSet::dynaset, "SELECT Spalte1, Spalte2 FROM Tabelle ORDER BY Spalte1", CMyRecordSet::none); m_pSet.MoveFirst(); if (!m_pSet.IsEOF()) { for (int i=0; i<=m_pSet.IsEOF(); i++) { //schreib alles in das listenfeld m_Show.Insert(i, m_pSet.MoveNext); } UpdateData(FALSE); }
-
Schau mal in deiner CRecordSet Klasse nach den Membervariablen.
Da müssten einige in der Headerdatei mit m_Spaltenname drin stehen.
Auf diese kannst du mitm_pSet.m_Spaltenname;zugreifen.
-
Und mach einfach
m_pSet.Open();Ob du eine oder alle Spalten holst fällt afair in der Geschwindigkeit nicht auf.

Achja: Du solltest, wenn es dann geht, die Variable anders nennen.
Es ist weder ein Member (m_) noch ein Zeiger (p).
Was mich noch stutzig macht:
m_Show.Insert(i, m_pSet.MoveNext);Das kompiliert?

Da fehlen Klammern und MoveNext gibt auch nichts zurück, was man anzeigen könnte.