Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi datenbank Problem!!! (https://www.delphipraxis.net/35670-datenbank-problem.html)

The_Tremendous 10. Dez 2004 14:23


datenbank Problem!!!
 
HI.

Also vorweg, ich bin totaler Programmierneuling.


Ich arbeite im Moment daran, eine Datenbank in Form eines Fahrtenbuchs zu programieren. Das ganze soll Objekt orientiert sein.

Hab das Problem, das ich nun mit einem neuen Fahrzeug auch eine neue Paradox 7 Tabelle erstellen muss.

Ich habe eine Klasse TFahrzeug und dazu die Klassen TPKW und TLKW die jeweils von TFahrzeug erben.
Nun hab ich das Problem, das ich nicht weis wie ich das realisieren soll, das wenn ich auf nen Button klicke erstmal ein neues Objekt PKW erstellt wird und dazu auch noch die passende Tabelle.

Ich weis das ich das mit nem Constructor machen muss, die Frage ist nur wie...


Wäre cool, wenn mir jemand helfen könnte.


Hab die Units UFahrzeug, UPKW, ULWK und UFahrzeugeingabe, wobei die ersten 3 Units für die Klassen sind und die Unit Fahrzeugeingabe ne form beinhaltet, die die Fahrzeuge verwaltet.


THx, The Tremendous

plautzer 10. Dez 2004 15:28

Re: datenbank Problem!!!
 
Hi,

ich habe deinen plan nicht ganz durchschaut :?
du willst als per button-druck, einen neuen datensatz in der tabelle Fahrzeug erstellen, oda?

Erst einmal musst entscheinden ob du das mit tables oder queries machen willst:

Eine Möglichkeit wie du es mit einer Query realisieren könntest:
Delphi-Quellcode:
Query.Close;
Query.SQL.Clear;
Query.SQL.Add('insert into Tabelle .db (Feld1, feld2,...) values(:a, :b,...);');
Query.Params.ParamByName('a').Value:= 'wert1';
Query.Params.ParamByName('b').Value:= 'wert2';
Query.ExecSQL;
und so mit einer tabelle:
Delphi-Quellcode:
  table1.Insert;
  table1.Edit;
  table1['PKw']:='wasdaauchreinsoll';
  Table1.post;
Ich hoffe das hilft erstmal...

cya

Plautzer

The_Tremendous 10. Dez 2004 15:47

Re: datenbank Problem!!!
 
Nein, das möchte ich nicht.

Also ich hab einen Button neues Fahrzeug erstellen. Wenn ich auf den klicke, dann soll ein neues Objekt PKW erstellt werden. Dann gebe ich auf einer Form in DBEdits die Feldernamen ein. Wenn ich dann auf den Button Ferig klicke, soll eine neue tabelle erstellt werden, die als apalten die einträge von den db edits bekommt.

Chris1986 10. Dez 2004 15:48

Re: datenbank Problem!!!
 
@The_Tremendous:
Willst du für jedes Fahrzeug einen neuen Table anlegen? :gruebel:

MfG
Christian

plautzer 10. Dez 2004 16:18

Re: datenbank Problem!!!
 
was soll den " ein neues Objekt PKW erstellt" bedeuten?
Was ist bei dir ein Objekt? -> Datensatz, tabelle.

Und in wiefern sind die tabelle fahrzeug und pkw miteinander verbunden, id??

Kannst du nochmal kurz die beziehungen der tabellen beschrieben?

Plautzer

The_Tremendous 10. Dez 2004 16:22

Re: datenbank Problem!!!
 
@ Chris: Ja, ich will für jedes Fahrzeug das erstellt wird eine neue Tabelle anlegen.


@ Plauzer: Objekt im Sinne von OOP also Okjekt einer Klasse!


MFG the_tremendous

Albi 10. Dez 2004 16:22

Re: datenbank Problem!!!
 
Hallo,

wieso du eigene Klassen erstellen willst versteh ich zwar nicht ganz und zum anderen sollten die Spaltennamen für die jeweiligen DB's doch gleich sein oder?

Ich würde mir gar nicht die Arbeit machen und für jedes Fahrzeug eine neue DB anlegen sondern die Fahrzeuge alle in einer DB anlegen (die Daten sind eh alle gleich) und dann ne weitere DB anlegen wo die Details drin stehen und in die dritte DB nur die Verweise zu den ersten beiden DB's.

Das sollte dir ne Menge arbeit sparen oder es ist so wichtig das die einzelnen DB's der Fahrzeuge unterschiedliche Spaltennamen habe?

Dann würde ich nicht DBEdit sondern nur Edit, da du bei DBEdit ja immer nen Verweis zu einer DB angeben solltest, was du aber nicht kannst, da ja noch keine DB da ist.

The_Tremendous 10. Dez 2004 16:29

Re: datenbank Problem!!!
 
Ja, ich würde es auch lieber einfacher machen, das Problem ist nur, das das ein Prjekt ist, in dem mir vorgegeben wird, das ich es objektorientiert schreiben soll. Unteranderem muss ich eigene Klassen, Vererbung und und und da mit reinbringen.

Wenn du mir sagst, wo ich sonst noch Klassen mit Vererbung reinbringen kann, mache ich es anders, aber das ist bisher das einzige das mir eingefallen ist.

Nein, die Tabellen sehn nicht immer gleich aus, da aus dem ersten edit zum beispiel dann der tabellenname ausgelesenwird, und und und.

Bezwecken will ich damit, das zu dem eingegebenen auto eine tabelle fahrtenbuch geschrieben wird.


MFG the_tremendous

The_Tremendous 10. Dez 2004 16:32

Re: datenbank Problem!!!
 
@ Albi:

Albi schrieb: Ich würde mir gar nicht die Arbeit machen und für jedes Fahrzeug eine neue DB anlegen sondern die Fahrzeuge alle in einer DB anlegen (die Daten sind eh alle gleich) und dann ne weitere DB anlegen wo die Details drin stehen und in die dritte DB nur die Verweise zu den ersten beiden DB's.



--> So habe ich mir das ja auch vorgestellt, und das auto wird auch bereits in der Tabelle Fahrzeuge gespeichert. Was mir nun halt noch fehlt, ist das automatische erstellen der tabelle Fahrtenbuch für das neue Auto

plautzer 10. Dez 2004 16:52

Re: datenbank Problem!!!
 
Warum willst du für jedes auto eine neue Fahrtenbuchtabelle erstellen?
Mache einfach eine große tabelle wo alle FAhrten drin sind und stelle eine Beziehung zwischen der Tabellen Fahrzeug u. Fahrtenbuch her, IDs z.B.

hier wäre aber ein Bsp. um eien tabell ezu erstellen:
Delphi-Quellcode:
var
pfad,tabellen, name, ext: string;
a:integer;
begin
  pfad := ExtractFilePath(Application.ExeName);
  name := ExtractFileName(Application.ExeName);
  ext := ExtractFileExt(Application.ExeName);
  tabellen:=pfad + 'tabellen';
  with Table1 do DatabaseName := tabellen;
IF NOT FileExists(tabellen + '\test.DB') THEN
        BEGIn
        if not ForceDirectories(tabellen) then
        ShowMessage('lol');

        with Table1 do
                begin
                active := false;
                DatabaseName := tabellen;
                tabletype := TTParadox;
                tablename := 'test';
                Name := 'Table1';

        with FieldDefs do
                begin
                 clear;
                     Add('ID', ftinteger, 0, false);
                     Add('Name', ftString, 50, false);
                     Add('Vorname', ftstring, 50, false);
                     Add('Datum', ftDate, 0, false);
                     Add('Bemerkung', ftString, 100, false);
                     Add('telefon', ftinteger, 0, false);
                     Add('Geld', ftcurrency, 0, false);
                end;

        WITH indexdefs DO BEGIN
        clear;
        Add('ID', 'ID', [ixprimary, ixunique]);
      END;

        CreateTable;
Ich hoffe es hilft.

Plautzer


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:28 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz