[C++] Syntax: Feld aus einer Accessdatenbank (Tabelle) auslesen?
XT-TriGGeR 08.06.2009 - 11:19 1664 7
Deftik
Storage baby!
|
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 //---------------------------------------------------------------------------
#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
ModeratorHoffnungsloser Optimist
|
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
|
#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!
|
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
ModeratorHoffnungsloser Optimist
|
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. 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.htmlDas soll keine Schikane sein, es ist eine Voraussetzung, wenn wir dir helfen können sollen.
|
Nico
former person of interest
|
es ist offensichtlich dass ihm der code fehlt und er ihn von leuten hier "vorgeschlagen" bekommen will..
|
Deftik
Storage baby!
|
AnsiString PWDB= DBGrid1->....
hier weiß ich einfach nicht weiter. egal ob ich: AnsiString PWDB= DBGrid1->Fields->...
oder AnsiString PWDB= DBGrid1->Columns->...
versucht habe.
|
tresh
Little Overclocker
|
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.
|