Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » ado problem

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ] [ 3 ]
000
17.05.2004, 10:49 Uhr
rene rosenberger



hallo,

versuche mich nun gezwungener maßen in ado. die access datenbankverbindung scheint hergetellt zu sein. wie fülle ich nun meine editböxlis mit den inhalten aus der db. und wie fülle ich eine combobox mit den inhalten einer db ?
--
gruesse rene
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
17.05.2004, 18:04 Uhr
~daDings
Gast


hmmm
Um was gehts genau?

Aus dem Stehgreif würd ich sagen
eine Schleife basteln in der Schleife immer rs.MoveNext() und die Werte in die Datenbank eintragen m_MeineListBox.AddItem(text);

C++:
m_MeineListBox.ResetContent(); // oder so ähnlich
while rs.EOF == FALSE
{
  m_MeineListBox.AddItem(text);
  // wobei ich nicht weiß mit welcher Methode du die Datenbank geöffnet hast
  rs.MoveNext();
}



.... aber vielleicht habe ich das ganze auch GAAAAANZ falsch verstanden
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
17.05.2004, 18:13 Uhr
rene rosenberger



fangen wir mal ganz einfach von vorne an. wie connecte ich zur db (access) ? bei initialisierung sollen die felder alle leer sein. klickt man dann auf nächsten datensatz, soll der erste angezeigt werden. vorerst mal nur in einem editfeld.
--
gruesse rene
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
17.05.2004, 18:23 Uhr
~daDings
Gast


Also ich kann dir schon helfen, wenn es den sein muss. Meinetwegen machen wir auch ein KLEINES Projekt zusammen. Aber eins müsste ich vorausschicken: Ich verwende keine abgleiteten Klassen die so "schön" unterstützt werden von der MFC. Einfach deshalb nicht weil du dann die einzelne Sätze aus der Datenbank nicht mehr kapseln kannst. Ich hab lieber eine CAdressen Klasse die sich dann selber in die Datenbank schreibt als eine CMeinDatenbankklasse die dann sehr feste Datenbestände liest und schreibt

Also entweder mit mir, den steinigen und beschwerlichen ( und konfusen *gg)Weg oder du wartest auf wen anderen. Sag mir Bescheid.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
17.05.2004, 18:48 Uhr
rene rosenberger



ich nehme den steinigen weg gerne an. es gilt 3 tabellen einzubinden. eine tblPlatine, eine tblKunde und eine tblSoftware. alle in einer db. nehme mal stark an das ich ein neues projekt amlegen soll, oder ? denn immo habe ich eine klasse crecordset im projekt und die willst du ja nicht. also wie gehen wir vor ?
--
gruesse rene
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
17.05.2004, 18:53 Uhr
~daDings
Gast


Haste ICQ?
Wenn ja, meine Nummer ist 19711052.
Wenn nicht müssen wir uns was anderes suchen um darüber etwas genauer sprechen zu können.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
17.05.2004, 19:41 Uhr
rene rosenberger



nein, leider keine standleitung.
--
gruesse rene
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
17.05.2004, 20:48 Uhr
~daDings
Gast


na dann machen wir es mal hier.
ich nehm mal nur die tblKunden her der Rest funktioniert dann eh ähnlich.

Also ich würds so machen.
Eine Klasse erstellen für die Kunden. Ich hab sie CKunden genannt.

C++:
class CKunden
{
public:
    CKunden(void);
    ~CKunden(void);
//private:
    //nacvhher wieder als aktiven Code und
    //Zugriffsfunktionen schreiben für die ganzen Variablen
    int m_ID;
    CString m_Vorname;
    CString m_Nachname;

    // was halt so alles zusammenkommt
    
};



und ein Klasse die eine Liste auf alle Kunden enthält. Die hab ich CKundenListe genannt hier der header:


C++:
#include <afxtempl.h>
#include "Kunden.h"
class CKundenListe
{
public:
    CKundenListe(CString databasepath);
    ~CKundenListe(void);
    void ReadTheDatabase(void);
    CKunden* GetKunden(int id);
private:
    CArray<CKunden*,CKunden*> m_KundenListe;
    CString m_Databasepath;
public:
    int GetCountListe(void);
};



und so das cpp:

C++:
#include "StdAfx.h"
#include "kundenliste.h"
#include "afxdao.h"
CKundenListe::CKundenListe(CString databasepath)
{
    this->m_Databasepath=databasepath;
    ReadTheDatabase();
}

CKundenListe::~CKundenListe(void)
{
}

void CKundenListe::ReadTheDatabase(void)
{
    CDaoDatabase db;
    CDaoRecordset rs;
    COleVariant dat;
    CString sqltx;
    db.Open(this->m_Databasepath);
    rs.m_pDatabase=&db;
    sqltx.Format("Select * from tblKunden");
    rs.Open(AFX_DAO_USE_DEFAULT_TYPE,sqltx);

    m_KundenListe.RemoveAll();
    while (rs.IsEOF()!=TRUE)
    {
        CKunden *kunde= new CKunden;
        dat=rs.GetFieldValue("Id");
        kunde->m_ID = dat.intVal;

        dat=rs.GetFieldValue("vorname");
        kunde->m_Vorname = dat.pbVal;

        dat=rs.GetFieldValue("nachname");
        kunde->m_Nachname = dat.pbVal;
        // hier halt noch die anderen Daten auslesen

        m_KundenListe.Add(kunde);
        rs.MoveNext();
    }
    rs.Close();
    db.Close();
}
CKunden CKundenListe::GetKunden(int id)
{

    return m_KundenListe.GetAt(i);
}
int CKundenListe::GetCountListe(void)
{
    return m_KundenListe.GetCount();
}




willste dazu was wissen oder ist es soweit klar?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
18.05.2004, 09:06 Uhr
rene rosenberger



also lösche ich aus meinem bisherigen projekt vorher einfach die klasse crecordset ? noch was anderes löschen vorher ? oder neu anlegen ? wenn ich neu anlege mit welcher ansichtsklasse ?

ansonsten : gut verständlich ! wenn ich das richtig verstanden habe ist die klasse ckunden zum speichern der daten da. die klasse ckundenliste für die operationen und die funktion getkunden liefert mir den gewünschten kunden zur angegebenen id. korrekt ?

gruesse rene
--
gruesse rene
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
18.05.2004, 09:19 Uhr
~daDings
Gast


Leg dir ein Projekt an mit einem Dialogfenster. In OnInitDialog schreibst einfach rein
CKundenListe kunden("C\download\\db1.mdb");
natürlich mit deinem Pfad wo deine Datenbank herumkugelt und mit dem richtigem Namen. Somit wird der Construktor aufgerufen und das teil beginnt Daten zu lesen. Kannst du überprüfen wenn du einen Haltepunkt in der While-Schleife machst.
Ansonsten seh ich das genau so wie du ;-)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ]     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: