"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

[C++] Syntax: Feld aus einer Accessdatenbank (Tabelle) auslesen?

XT-TriGGeR 08.06.2009 - 11:19 1664 7
Posts

Deftik

Storage baby!
Avatar
Registered: Sep 2004
Location: Frankfurt|DE
Posts: 1279
Servus,

meine Ausgangssituation:

Ich schreibe gerade ein Programm (im Borland C++ Builder 5) das seine Daten in einer Accessdatenbank ablegt (auch noch nicht syntaktisch gelöst). Nun möchte ich die Datenbank (Feld aus einer Tabelle)auslesen.
Auf dem Formular ist eine Datasource vom Typ TDatasource und eine Tabelle vom Typ TTable. Verbindung ist über ODCB gelöst und funktioniert auch. Daten werden in korrekt in eine DBGrid angezeigt.

Nun ist mein Problem ich benkomme es von der Syntax nicht hin ein Feld aus der Datenbank auszulesen. Hier mal der Code den ich für den Login gemacht habe:
In Zeile 17 versuche ich das Feld aus der Datenbank in einen AnsiString zu packen, bis jetzt leider ohne Erfolg. Habe versucht die Daten über die TTable Komponente zu bekommen oder auch über das DBGrid KOmponente. Hat aber auch nicht gefruchtet. Danke für die Hilfe

TriGGeR




Code:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include "Uebersicht.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFrmLogin *FrmLogin;
void Login (int Abteilung)
{
FrmLogin->TbPasswort->Active=true;
int x=0;
x=Abteilung+1;
AnsiString PWDB= Hier versuche ich das Feld auszulesen
FrmLogin->Label1->Caption=PWDB;
if (PWDB!=FrmLogin->edtPasswort->Text)
MessageBox(0,"Sie haben das falsche Passwort eingegeben!","Fehler",MB_OK);
else
{
FrmLogin->Visible=false;
FrmUebersicht->Visible=true;
FrmLogin->TbPasswort->Active=false;
}

}
//---------------------------------------------------------------------------
__fastcall TFrmLogin::TFrmLogin(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------



void __fastcall TFrmLogin::Beenden2Click(TObject *Sender)
{
FrmLogin->Close();
}
//---------------------------------------------------------------------------






void __fastcall TFrmLogin::Button1Click(TObject *Sender)
{
int Abteilung=0;
Abteilung=FrmLogin->cbAbteilung->ItemIndex;
Login(Abteilung);

}
//---------------------------------------------------------------------------


Tabelle sieh so aus

ID | Abteilung | Passwort (ID=AutoWert;Abteilung=Text;Passwort=Text)
1 | xy | xxxxxxxxxxxx123
Bearbeitet von Deftik am 08.06.2009, 11:21

that

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11338
Ich kenn mich zwar überhaupt nicht aus, aber kannst du bitte mal den Code mit ordentlichen Einrückungen posten? Außerdem schaut er unvollständig aus, es sind ja nichtmal Spuren von irgendeinem Datenbankzugriff zu sehen.

tresh

Little Overclocker
Avatar
Registered: Feb 2003
Location: Vienna
Posts: 73
Code:
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include "Uebersicht.h"

#pragma package(smart_init)
#pragma resource "*.dfm"

TFrmLogin *FrmLogin;
void Login (int Abteilung)
{
    FrmLogin->TbPasswort->Active=true;
    int x=0;
    x=Abteilung+1;
    AnsiString PWDB= Hier versuche ich das Feld auszulesen   
    FrmLogin->Label1->Caption=PWDB;
    if (PWDB!=FrmLogin->edtPasswort->Text)
         MessageBox(0,"Sie haben das falsche Passwort eingegeben!","Fehler",MB_OK);

    else {
        FrmLogin->Visible=false;
        FrmUebersicht->Visible=true;
        FrmLogin->TbPasswort->Active=false;
    }
}


 __fastcall TFrmLogin::TFrmLogin(TComponent* Owner)
        : TForm(Owner)
{
}

void __fastcall TFrmLogin::Beenden2Click(TObject *Sender)
{
    FrmLogin->Close();
}

void __fastcall TFrmLogin::Button1Click(TObject *Sender)
{
    int Abteilung=0;
    Abteilung=FrmLogin->cbAbteilung->ItemIndex;
    Login(Abteilung);

}

Bitte keinen Augenkrebs Spaghetti-unindented-code, davon hat keiner was ;)

Wenn du kurz erklaerst was die pragma-Anweisungen bezwecken sollen bzw. was Borland damit macht kann ich Dir vielleicht helfen.

PS: Zeile 17 wird nicht wirklich kompilieren :), es sei denn du hast 'Hier' 'versuche' 'ich' 'das' 'Feld' und 'auszulesen' irgendwo als Makro definiert :P

PPS: Liefert das aus Zeile 17 ueberhaupt einen AnsiString zurueck? Kannst du Compilerfehler herzeigen? Die Information ist unvollstaendig und so wie sie ist kann dir wahrscheinlich niemand helfen.
Bearbeitet von tresh am 08.06.2009, 22:49

Deftik

Storage baby!
Avatar
Registered: Sep 2004
Location: Frankfurt|DE
Posts: 1279
Das mit dem "Hier versuche ich auf die Datenbank..." habe ich nur geschrieben damit ihr wisst wo es stehen soll.

Datentyp ist ja erstmal egal, der kann noch angepasst werden.
Da das Feld aber vom Typ Text ist wird ein AnsiString zurückgegeben

KA zu den Pragmas das hat der Builder selbst eeingefügt. Die Verbindung zur Datenbank steht über ODBC-Treiber. Ich will eigendlich nur wissen wie ich aus einem DBGrid oder einer Table Komponente ein Datenfeld aus der Datenbank abfragen kann. Ich hoffe das ist jetzt verständlicher

that

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11338
Zitat von XT-TriGGeR
Ich will eigendlich nur wissen wie ich aus einem DBGrid oder einer Table Komponente ein Datenfeld aus der Datenbank abfragen kann. Ich hoffe das ist jetzt verständlicher

Du wiederholst dich.

Zitat von XT-TriGGeR
In Zeile 17 versuche ich das Feld aus der Datenbank in einen AnsiString zu packen, bis jetzt leider ohne Erfolg. Habe versucht die Daten über die TTable Komponente zu bekommen oder auch über das DBGrid KOmponente. Hat aber auch nicht gefruchtet.

Wo ist das, was du ohne Erfolg probiert hast? Wie hast du versucht, die Daten über TTable oder DBGrid zu bekommen, und auf welche Art und Weise hat es nicht funktioniert?

Hast du die Dokumentation gelesen?

Bitte poste keine weiteren Fragen, bevor du folgendes Dokument gelesen hast:
http://www.tty1.net/smart-questions_de.html

Das soll keine Schikane sein, es ist eine Voraussetzung, wenn wir dir helfen können sollen.

Nico

former person of interest
Registered: Sep 2006
Location: -
Posts: 4082
es ist offensichtlich dass ihm der code fehlt und er ihn von leuten hier "vorgeschlagen" bekommen will..

Deftik

Storage baby!
Avatar
Registered: Sep 2004
Location: Frankfurt|DE
Posts: 1279
Code:
AnsiString PWDB= DBGrid1->....

hier weiß ich einfach nicht weiter.
egal ob ich:
Code:
AnsiString PWDB= DBGrid1->Fields->...
oder
Code:
AnsiString PWDB= DBGrid1->Columns->...
versucht habe.

tresh

Little Overclocker
Avatar
Registered: Feb 2003
Location: Vienna
Posts: 73
Bitte poste doch irgendeinen Code mit Fehlermeldungen, mit irgendwelchen pointern auf irgendwelche Objekte die nirgendwo definiert werden kommen wir nicht weiter.

Ist DBGrid->Columns->bla ueberhaupt ein AnsiString? Wenn nicht musst du das irgendwie casten oder umcodieren.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz