Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Grid auf Frame, TTable & DSource auf Form (https://www.delphipraxis.net/104085-grid-auf-frame-ttable-dsource-auf-form.html)

f4k3 27. Nov 2007 08:26

Datenbank: Paradox • Version: 7 • Zugriff über: BDE, Datasource

Grid auf Frame, TTable & DSource auf Form
 
Moin Moin liebe DPler ;)

hab folgendes Prob ...

hab zwei Grids ... Das eine Grid stellt die MIT.DB dar und das andere die Ben.db ...
die beiden Grids liegen auf nem Frame im Hauptprogramm ... der eigentliche Frame ist natürlich seperat in ner .pas datei ...

ich hab mein Hauptprogramm in die "uses"-Liste mit aufgenommen, da auf meinem Hauptprogramm quasi alle Datenbanken liegen ...
wenn ich nun von einem Grid die Proberty "Datasource" festlegen möchte, klappt dass wunderbar, und er zeigt mir noch vor der Laufzeit (quasi im Editiermodus)
die Datensätze korrekt ohne jedes gemoser an.

Sobald ich das Projekt compaliere, sind in beiden Grids keine Datensätze mehr vorhanden :( bzw. werden nicht angezeigt.
ich muss dazu sagen dass ich nur ein feld anzeigen lasse, nämlich das Feld indem der Name gespeichert ist.

So ... da ich die Datensätze von der Mit.db in die Ben.db kopieren möchte ist es natürlich äußert unvorteilhaft wenn ich keine Daten hab ^^

Des ganze soll so funktionieren ...

Wenn ich auf den Button ">>" (Hinzufügen) klicke, dann soll folgendes getan werden ...

Delphi-Quellcode:
fKundenTV.tBen.Edit; // Table im editier-modus setzen
    fKundenTV.tBen.Insert; // Datensatz hinzufügen

    fKundenTV.tBen.FieldByName('Name').AsString := fKundenTV.tMIT.FieldByName('Name').AsString; //beim aktuellen Datensatz "Namen", der Ben.db zuweisen;
    fKundenTV.tBen.FieldByName('Branche').AsString := fKundenTV.tMIT.FieldByName('Branche').AsString; //beim aktuellen Datensatz "Branche", der Ben.db zuweisen;

    fKundenTV.tBen.Post; // Das ganze speichern
Wenn ich auf den Button "<<" (Entfernen) klicke, dann soll folgendes getan werden ...

Delphi-Quellcode:
    if fKundenTV.tBen.FindNext = False then
    begin

          fKundenTV.tBen.Delete; // aktuellen Datensatz aus Ben.db Löschen

    end;
Ich brauch deshalb ne ausgelagerte Table, weils ne eigene Table für den "Endscreen gibt" ... in der dann auch ne Bilder Slideshow zu finden ist.

Könnt ihr evtl. tipps geben wie ich dem Problem auf die Schliche kommen könnte?
des Prob is halt ich krieg auch keine Fehlermeldung oder sonstiges, nur wenn ich versuch nen datensatz zu löschen wenn keiner mehr vorhanden ist :D
aber des lässt sich mit ner schönen if abfrage und TFieldByName regeln.

tHx für Eure Posts

marabu 27. Nov 2007 11:27

Re: Grid auf Frame, TTable & DSource auf Form
 
Hallo,

nimm deine MainForm wieder aus der Uses-Anweisung deines Frames heraus. Die DataSource deiner Grids darfst du nicht in der Frame-Vorlage setzen. Diese Verknüpfung gehört in die Instanz, die du in deine MainForm eingebettet hast.

Grüße vom marabu

f4k3 27. Nov 2007 12:11

Re: Grid auf Frame, TTable & DSource auf Form
 
Mhm ... ok ;)

Aber könntest du mir erklären wo der unterschied liegt wenn ich über meine von der Frame über meine Mainform aus auf die Instanz zugreife?
leuchtet mir noch ned wirklich ein ^^

Aber danke schonmal für die Hilfe ;) werds gleich ma ausprobieren ;)

Komischerweise hat ich dass Prob gestern mit RAD Studion 2007 nicht ...
in der Arbeit mit Delphi 7 hingegen schon ... auch irgendwie komisch ...

vllt. auch nur glück ... vllt liegts auch daran dass dass nicht mein Programm is, sondern ich nur für nen arbeitskollegen erweiter :P

marabu 28. Nov 2007 08:58

Re: Grid auf Frame, TTable & DSource auf Form
 
Hallo,

ein Frame ist sowas wie eine ChildForm als Template - du sollst da keine unnötigen Abhängigkeiten hinein schreiben. Durch die Aufnahme einer bestimmten Form über USES tust du aber genau das.

Das unterschiedliche Verhalten von D7 und RAD Studio scheint mir nicht produktspezifisch zu sein. Ich vermute eher abweichende Pfade im Dateisystem.

Freundliche Grüße

f4k3 29. Nov 2007 14:36

Re: Grid auf Frame, TTable & DSource auf Form
 
mhm okay ;)

Aber wie verhält sichs dann mit Programmcode?

Das dürfte quasi nichts anhaben wenn ich den in den einzenen frames niederschreibe oder?

marabu 29. Nov 2007 16:44

Re: Grid auf Frame, TTable & DSource auf Form
 
Aber natürlich darf dein Frame Code enthalten, du darfst auch Units einbinden. Nur die feste Kopplung deines Frames an die später aufnehmende Form ist problematisch - und macht ja auch keinen Sinn.

Als Daumenregel würde ich dir empfehlen: Verknüpfe (USES) deinen Frame nur mit Units, die nicht mit deinem Projekt zusammen übersetzt werden. Dein Code in der Frame-Unit ist völlig unkritisch, wenn er in sich abgeschlossen ist. Ist eine Außenkommunikation - z.B. mit der aufnehmenden Form - notwendig, so kannst du die Verbindung zur Laufzeit und von der Form aus einrichten.

Freundliche Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:55 Uhr.

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