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

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/c_syntax_feld_aus_einer_accessdatenbank_tabelle_au_207955/page_1 - zur Vollversion wechseln!


Deftik schrieb am 08.06.2009 um 11:19

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


that schrieb am 08.06.2009 um 22:26

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 schrieb am 08.06.2009 um 22:35

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.


Deftik schrieb am 10.06.2009 um 16:04

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 schrieb am 10.06.2009 um 22:36

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 schrieb am 10.06.2009 um 22:43

es ist offensichtlich dass ihm der code fehlt und er ihn von leuten hier "vorgeschlagen" bekommen will..


Deftik schrieb am 12.06.2009 um 08:46

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 schrieb am 18.06.2009 um 18:17

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.




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025