Announcement

Collapse
No announcement yet.

Kann keine Datenbank erzeugen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Kann keine Datenbank erzeugen

    Hallo Leute, bin neu hier und hoffe ich stelle die richtigen Fragen. Ich muss eine Datenbank anlegen, der code befindet sich unten aber Borland meldet unz zeigt mir das es keine Datenbank exitiert und ich frage mich warum? Vieleicht kann mir ja jeman hier einen Tipp geben, danke.

    Teile des Codes:

    Das steht im Hauptprogramm, Gui:

    AnsiString dir = "e:\\_ZE\\1_E\\Test";
    einUser->setDBDirectory(dir);
    einUser->setDBName();
    einUser->InitDB();

    Das steht in der Klasse:

    //------------------------------------------------------------------------------
    void CUser::setDBDirectory(const AnsiString _uDBDirectory)
    {
    this->uDBDirectory = _uDBDirectory;

    CreateDirectory(uDBDirectory.c_str(),0); // das wird später ausgelagert!!!
    //ShowMessage("directory '"+uDBDirectory+"' created");
    }
    //------------------------------------------------------------------------------
    void CUser::setDBName(void)
    {
    this->uDBName = this->uName + ".db";
    //Fm_anmelden->Table1->DatabaseName = "e:\\_ZE\\1_E\\Test";
    }
    //------------------------------------------------------------------------------
    void CUser::InitDB(void)
    {
    Fm_anmelden->Table1->DatabaseName = this->uDBName;
    Fm_anmelden->Table1->TableName = "e:\\_ZE\\1_E\\Test";

    this->CreateTableDaten(Fm_anmelden->Table1); // Tabelle erzeugt
    }
    //------------------------------------------------------------------------------
    void CUser::CreateTableDaten(TTable* _tDaten)
    {
    this->uTable = _tDaten;
    this->uTableType = ttDefault;
    _tDaten->Active = false;

    this->NewDataField(tName, ftString);
    this->NewDataField(tPasswort, ftString);
    //this->FillTableDaten(Fm_anmelden->Table1);
    }
    //------------------------------------------------------------------------------
    TFieldDef* CUser::NewDataField(String DataName, TFieldType DataType)
    {
    TFieldDef* pNewDataField = uTable->FieldDefs->AddFieldDef();

    pNewDataField->Name = DataName;
    pNewDataField->DataType = DataType;

    return pNewDataField;
    }
    //------------------------------------------------------------------------------
    void CUser::FillTableDaten(TTable* _tDaten)
    {
    _tDaten->Active = true;

    _tDaten->Append();

    _tDaten->FieldValues[tName] = uName;
    _tDaten->FieldValues[tPasswort] = uPassword;

    _tDaten->Post();
    }
    //------------------------------------------------------------------------------

  • #2
    void CUser::setDBName(void)
    {
    this->uDBName = this->uName + ".db";


    uDBName wird irgendwo anders versorgt???
    Christian

    Comment


    • #3
      was meinst du mit versorgt? Der wird eingelesen von der Gui und wird intern gespeichert oder er soll in der Datenbank mit dem Passwort gespeichrt werden, was momentan nicht funktioniert. Das Verzeichniss wird angelegt aber wenn ich mit FillTableDaten versuche es zu füllen sagt Borland das die Datenbank nicht existiert!

      Comment


      • #4
        this->uName hat einen Inhalt...?

        Ist hier

        Fm_anmelden->Table1->DatabaseName = this->uDBName;


        in uDBName der gewünschte Wert drin?
        Christian

        Comment


        • #5
          ja, wenn du oben bei setDbName schaust wird nur dem userenamen .db angehängt.

          Comment


          • #6
            ja, wenn du oben bei setDbName schaust wird nur dem userenamen .db angehängt.
            Nun wenn der Name der DB offenbar stimmt, wäre die nächste Frage, ob dass

            Fm_anmelden->Table1->TableName = "e:\\_ZE\\1_E\\Test";


            ein zulässiger Name für eine Tabelle ist. Des Weiteren muss die DB bestehen. Eine neue DB kann m.E. so nicht erzeugt werden -> erzeugen der DB mit rechter Maustaste im Editor -> Explorer
            Christian

            Comment


            • #7
              Der Name der Datenbank soll der Benutzername.db sein aber wie ich weiss kann man den Pfad einer Datenbank eingeben aber du bringst mich auf die Idee gerade das die Datenbank ja nicht existiert und deswegen hat TableName keinen Sinn so wie das hier ist. Kannst du mir sagen wire ich eine bd anlegen kann, wenn das hier offensichtlich nicht ganz ok ist!

              Comment


              • #8
                Schau dir mal TDatabase an. Damit sollte das gehen. Und TTable verweist dann auf TDatabase...
                Christian

                Comment


                • #9
                  Sorry, ich hab das nicht ganz gelesen, das was unten stand mit der db im explorer erzeugen. Wäre ja einfach aber leider geht das ncht, Jeder Benutzer erzeugt seine eigene Datenbank bei der Anmeldung automatisch durch den Quellcode. Und das ist mein momentanes Problem!

                  Comment


                  • #10
                    ok werde ich machen, danke!

                    Comment


                    • #11
                      Könntest du mir eine kurze einleitung noch geben, so vom prinzip her, wäre nett!

                      Comment


                      • #12
                        Nein, da die BDE nicht das schnellst ist, und auch nicht weiter von Borland gepflegt wird, hae ich diese nie genutzt. Bin da ein MySQL Vertreter....mit den entsprechenden Komponenten....Habe allerdings zu Hause einige HTML-Seiten die die BDE erklären. Könnte ich mailen....
                        Christian

                        Comment


                        • #13
                          Ja, danke das wäre sehr nett:[email protected]
                          Ach so, habe das doch noch zum laufen gebracht und zwar musste ich nur für DataBaseName->das Verzeichniss eingeben und für TableName->usernamen. Und dann noch das Wichtigsteie Methode CreateTable() vergessen :-)

                          Comment


                          • #14
                            ist unterwegs
                            Christian

                            Comment

                            Working...
                            X