Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[Delphi] Datenbank

Empfohlene Antworten

Veröffentlicht

Ich hab ein Programm geschrieben in Delphi und auch eine Datenbank erstellt, funktioniert auch alles super!

Nur wenn ich das Programm wo anders starten will, als von meinem Rechner, denn kommt die Fehlermeldung, dass er den Pfad d:/Programm _delphi/Fragenkatalog.db nichz findet!

Ich habe aber im Programm keinen Pfad angegeben, wo könnte der nun stehen oder wie kann ich den ändern?

Ich nehme mal an, du arbeitest mit einer Paradox-DB und TTable und TDatasource. Was hast du da unter DatabaseName angegeben ?

Wenn es so ist, wie ich vermute, mußt du den Pfad in der BDE einstellen.

jupp.. du musst entweder die DB in der BDE auf dem jeweiligen Rechner registrieren, oder in deinem Prog im DB.name den pfad mit angeben... z.B. "./database/tolldb.db", dann erwartet er die DB im Unterverzeichnis database deines Programmverzeichnisses...

  • 2 Wochen später...

Jetzt bekomme ich noch folgende Fehlermeldung:

Im Projekt Projekt1.exe ist eine Exception der Klasse EDatabaseError

aufgetreten! Meldung 'Table1: Opaeration bei geschlossener Datenmenge

nicht ausführbar' Prozeß wurde angehalten! Mit einzelne Anweisung oder

Start fortsetzen!

Das Programm hatte an meinem Rechner funktioniert, nur woanders treten Fehler auf :-(

Folgende Angaben wären interessant:

a)Welche DB-Komponenten verwendest du? (TTable?)

b)An welcher Stelle im Code kommt diese Fehlermeldung

Allein mit der Meldung kann man nix anfangen. Normalerweise hat da Delphi aber recht: Du versuchst was an einer geschlossenen Datenmenge zu ändern, wie es aussieht.

Genau, benutze TTable und die Fehlermeldung kommt, wenn ich das Programm starte! Wo der Fehler ist wird mir nicht angezeigt!

Das ist mein Quelltext in der Unit:

procedure TForm4.AntwortAClick(Sender: TObject);

Begin

  Antwort:=table1.FieldByName('Loesung').AsString; //Lösung überprüfen

    If Antwort=AntwortA.Caption then //Vergleich von Lösung und Antwort

      Begin

        Antwort:= 'True';

        Showmessage('Die Antowrt ist richtig');

      end

      else

        Begin

          Antwort:= 'False';

          Showmessage('Die Antowrt ist falsch');

        end;

  //AntwortA.Checked:=False;

  Spielbrett.show; //Öffnet wieder Spiel

  table1.First;

  for id:=0 to random(anzahl) do //ruft neue Frage auf

    Begin

      table1.Next;

    end;

  close;


end;


procedure TForm4.AntwortBClick(Sender: TObject);

Begin

  Antwort:=table1.FieldByName('Loesung').AsString;

    If Antwort=AntwortB.Caption then

      Begin

        Antwort:= 'True';

        Showmessage('Die Antowrt ist richtig');

      end

      else

        Begin

          Antwort:= 'False';

          Showmessage('Die Antowrt ist falsch');

        end;

  //AntwortB.Checked:=False;

  Spielbrett.show;

  table1.First;

  for id:=0 to random(anzahl) do

    Begin

      table1.Next;

    end;

  close;


end;


procedure TForm4.AntwortCClick(Sender: TObject);

Begin

  Antwort:=table1.FieldByName('Loesung').AsString;

    If Antwort=AntwortC.Caption then

      Begin

        Antwort:= 'True';

        Showmessage('Die Antowrt ist richtig');

      end

      else

        Begin

          Antwort:= 'False';

          Showmessage('Die Antowrt ist falsch');

        end;

  //AntwortC.Checked:=False;

  Spielbrett.show;

  table1.First;

  for id:=0 to random(anzahl) do

    Begin

      table1.Next;

    end;

  close;


end;


procedure TForm4.AntwortDClick(Sender: TObject);

Begin

  Antwort:=table1.FieldByName('Loesung').AsString;

    If Antwort=AntwortD.Caption then

      Begin

        Antwort:= 'True';

        Showmessage('Die Antowrt ist richtig');

      end

      else

        Begin

          Antwort:= 'False';

          Showmessage('Die Antowrt ist falsch');

        end;

  //AntwortD.Checked:=False;

  Spielbrett.show;

  table1.First;

  for id:=0 to random(anzahl) do

    Begin

      table1.Next;

    end;

  close;


end;


procedure TForm4.FormCreate(Sender: TObject);


begin

  randomize;

  id:=0;

  anzahl:=table1.recordCount;

  for id:=0 to random(anzahl) do

    Begin

      table1.Next;

    end;

end;



procedure TForm4.DataSource1DataChange(Sender: TObject; Field: TField);

begin

  anzahl:=Table1.RecordCount;

end;


end.

Mal ne doofe Frage: Wo wird Table1 eigentlich geöffnet?

Setz mal nen Haltepunkt auf die Zeile "anzahl:=table1.recordCount;" im FormCreate. Schau dir mal den Aufruf-Stack an...das sollte doch rauszufinden sein, wo genau das Prog aussteigt, ich vermute mal es macht beim RecordCount "Peng".

  • 2 Wochen später...

Hast du die BDE auf dem anderen Rechner installiert?

Wenn nicht wird es auch nicht funktionieren.

Die Borland Datbase Engine muß auf dem jeweiligen Rechner installiert sein.

  • 1 Monat später...

aloha ;)

meine bescheidene meinung:

kann es sein, dass du zur Entwurfszeit im Objektinspektor deine "Datenbankkomponenten" geöffnet hast ? das funktioniert dann an deinem rechner in der Regel sehr gut ;) vor allem aus Delphi heraus...

schliesse sie im Objektinspektor und im Ereignis OnFormShow kannst du ja reinhängen:

if not Table.Connected then

Table.Open;

... oder so ähnlich ;)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.