Announcement

Collapse
No announcement yet.

Einbindung einer InterBase- DB: Automatische Anmeldung

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

  • Einbindung einer InterBase- DB: Automatische Anmeldung


  • #2

    Comment


    • #3
      Einbindung einer InterBase- DB: Automatische Anmeldung

      Hallo!
      Wie kann ich Anmeldedialog bei Einbindung der Datenbank umgehen? Ich habe schon alles versucht (LoginPrompt, Params, OnLogin- Methode)- und es hat nicht funktioniert.
      Ich benutze C++Builder5, (LIBS) InterBase 7.0, WinXP

      Dennis

      Comment


      • #4
        Hi Sita,

        versuch mal folgendes in der OnLogin()-Methode:
        <PRE>
        AnsiString asTemp;
        for (int i = 1, i < LoginParams->Count; i++)
        {
        asTemp = LoginParams->Strings[i];
        // ich weiß an dieser Stelle nicht was genau bei IB drinstehen sollte, deswegen die Überprüfung auf USER und NAME
        if (asTemp.UpperCase().AnsiPos("USER") || asTemp.UpperCase().AnsiPos("NAME"))
        {
        // muß Benutzername sein
        int pos = asTemp.AnsiPos("=");
        asTemp = asTemp.SubString(1, pos);
        LoginParams->Strings[i] = asTemp + "SYSDBA";
        continue;
        }
        if (asTemp.UpperCase().AnsiPos("PASS"))
        {
        // muß Passwort sein
        int pos = asTemp.AnsiPos("=");
        asTemp = asTemp.SubString(1, pos);
        LoginParams->Strings[i] = asTemp + "masterkey";
        }
        }
        </PRE>

        Ich hoffe es ist kein Tippfehler drin, aber ich hab' hier an dem Rechner kein BCB und mußte den Code in diesem Fensterchen eingeben.

        Außerdem werden keine Überprüfung bei den Stringmanipulationen durchgeführt. Ich möchte erst mal wissen, ob es so überhaupt funktioniert.

        Wenn das auch nicht funktioniert, poste doch bitte mal was beim Eintritt in die Funktion in den LoginParams drin steht.

        Grüße

        Joche

        Comment


        • #5
          Hi Jochen,

          das war ein guter Vorschlag von dir, aber es hat leider nicht funktioniert. Anmeldedialog kommt zuerst. Wenn ich mich an der DB angemeldet habe, wird die OnLogin()- Methode aufgerufen. Und das ist dann schon zu spät.
          Es läuft so ab: zuerst wird <BR>
          <B> Application-&-ltCreateForm(__classid(TForm1), &Form1);</B><BR>
          im Project1.cpp ausgeführt, dann
          Konstrukter <BR>
          <B>__fastcall TForm1::TForm1(TComponent* Owner)
          : TForm(Owner)</B><BR>
          im Unit1.cpp und gleich danach <BR>
          <B>inline __fastcall virtual TForm(Classes::TComponent* AOwner) : TCustomForm(AOwner) { }</B><BR> aus forms.hpp (C++Builder intern) aufgerufen. Und dann kommt Anmeldedialog.<BR>

          Hast Du eine Idee?<BR>
          Mfg, Sit

          Comment


          • #6
            Hi Dennis,

            das ist aber ungewöhnlich, hast Du eine der Queries oder die TIBDatabase auf Active=true stehen? Sind alle Queries auf das TIBDatabase gesetzt?

            Per Definition sollte der Anmeldedialog nur dann erscheinen, wenn LoginPrompt=true, aber keine eigene Methode für das OnLogin-Ereignis geschrieben wurde. Bei mir wird der Anmeldedialog erst dann angezeigt, wenn ich die erste Query öffne. Machst Du das bereits im Konstruktor?

            Wird die OnLogin-Methode überhaupt aufgerufen?
            Wenn ja, poste doch bitte mal den Inhalt der LoginParams. Kann sein, das da was ganz anderes drinsteht, als ich vermutet habe. Wie gesagt, ich habe keine Infomrmix-DB...

            Wenn Du nicht weißt, wie Du an den Inhalt kommen sollst, füge folgende Zeilen am Anfang der OnLogin-Methode ein:
            <PRE>
            TStringList* slTemp = new TStringList();
            slTemp->Text = LoginParams->Text;
            slTemp->SaveToFile("c:\\login.txt");
            delete slTemp;
            </PRE>

            Grüße

            Joche

            Comment


            • #7
              Hi Jochen,<BR><BR>

              Du hattest Recht- bei einigen TTable- komponenten war die Eigenschaft <B>Active</B> zur Entwurfszeit auf true gesetzt. Sobald ich es auf false setze, wird die OnLogin- Methode aufgerufen. In LoginParams steht Folgendes:<BR><BR>
              <B>USER NAME=SYSDBA<BR>
              user_name=SYSDBA<BR>
              password=masterkey<BR><BR></B>
              Sobald ich aber Active- Eigenschaft von TTables zur Laufzeit auf true setze, erscheint Anmeldedialog. An welcher Stelle im Quelltext soll ich das machen?<BR><BR>
              Mfg, Denni

              Comment

              Working...
              X