Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Im DBGrid soll anstelle von 1234,23 - 1.234,23 erscheinen (https://www.delphipraxis.net/541-im-dbgrid-soll-anstelle-von-1234-23-1-234-23-erscheinen.html)

m-werk 6. Aug 2002 19:35


Im DBGrid soll anstelle von 1234,23 - 1.234,23 erscheinen
 
Hi, so nun habe ich wieder was bemerkt.

Ich habe ja eine Access-DB.

Wie kann ich es anstellen, dass wenn ich z.B. 1000 eingebe dass dann im DBGrid, dann so erscheint 1.000

Oder ich gebe 1234,23 ein. Erscheinen soll dann im DBGrid 1.234,23

Das DBGrid greift ganz normal auf die Access-DB zu. Ich hab leider nichts gefunden, wo ich das einstellen kann. Ich verwende Access 2000.

Kann man das auch im Programm selbst lösen, damit ich bei der Datenbank nichts mehr ändern muß?

Kann mir da jemand helfen?

sakura 6. Aug 2002 19:38

Wenn Du in der ADOTable (bzw. ADOQuery) die einzelnen Felder bearbeitest, dann kannst Du das DisplayFormat ändern. Dort kannst Du das gewünschte Format einstellen. Einfach mal in den Objekt Inspektor gehen und nachschaun (F1 listst alle Möglichkeiten).

Wenn Du noch weitere Infos brauchst, poste einfach noch einmal. Ich habe gerade nur wenig Zeit.

m-werk 6. Aug 2002 19:51

Hi, danke, das hat mir sehr weitergeholfen. Zu diesem Thema habe ich jetzt keine Frage mehr.

Ich habe aber noch eine andere Frage.

In meiner Datenbank sind ja einige Tabellen.
Im Programm sind diese Tabellen verknüpft über die KundenNr

Wenn ich jetzt vom Hauptprogramm einen Kunden lösche, wie kann ich es anstellen, dass von den anderen Tabellen diese Werte, die dem Hauptkunden zugeordnet sind, auch gelöscht werden?

Im Programm ist es jetzt so das wenn ich den Hauptkunden lösche, auch die anderen Werte nicht mehr ersichtlich sind (KundenNr zugeordnet)

Aber in der Access-DB sind diese Werte noch drinn.

MrSpock 6. Aug 2002 20:03

Hallo m-werk,

dazu könntest du in der AfterDelete (oder BeforeDelete) Methode ein SQL Statement einer TQuery Komponente ausführen:

Code:
DELETE FROM Tabelle2 WHERE KNr = :KNr
Durch den Doppelpunkt vor dem KNr wird ein Parameter erzeugt, den du z.B. über ParamByName zugreifen kannst:

Code:
DelQry.ParamByName('KNr').AsString := KundenNr;
DelQry.ExexSQL;
ShowMessage(IntToStr(DelQry.RowsEffected)+' Datensätze gelöscht.');
Dabei ist DelQry der Name der Lösch TQuery, KundenNr die zu löschende Kundennummer als String.

Übrigens liefert RowsEffected die Anzahl der betroffenen Datensätze.

m-werk 6. Aug 2002 20:16

Hi, das hab ich jetzt nicht ganz kapiert.

So sieht zur Zeit der Code im Hauptformular aus, wenn ich einen Hauptkunden löschen möchte.

Code:
procedure TKundendaten.DeleteClick(Sender: TObject);                          
begin
 if MessageDlg('Wollen Sie den Datensatz wirklich löschen?',
    mtWarning,[mbYes, mbNo], 0) = mrYes then
 begin
    try
      DM.ADOSHaupt.Delete;
    except
      on exception do
         MessageDlg('Keinen Datensatz zum löschen gefunden!',
         mtWarning,[mbOk], 0);
    end;
 end;
end;

Wie und wo kann ich deinen Code einsetzen?

MrSpock 6. Aug 2002 20:26

Hallo m-werk,

den SQL Code weist du einer neuen TQuery Komponente in ihrer Eigenschaft SQL zu. Diese Komponente nennst du (Eigenschaft Name) DelQry. Die DataBaseName dieser Kompo muss natürlich auf die korrekte Datenbank (ALIAS) zeigen.

Den Code, der unten steht, schreibst du in die Methode, die du dem Ereignis AfterDelete von ADOSHaupt zuweist.

m-werk 6. Aug 2002 20:33

Hi, ich habs noch immer nicht.

Ich habe jetzt mal ne ADOQuery2 erstellt. Diese hat den Namen 'DelQry' Die connection bezieht sich auf die ADOConnection, diese wiederum auf die Datenbank.

Wie muß ich jetzt schritt für schritt weitergehen? Ich komm nicht dahinter!

MrSpock 6. Aug 2002 20:39

Hallo m-werk,

jetzt kannst du die Eigenschaft SQL von DelQry anklicken und den 1. Code eingeben.

m-werk 6. Aug 2002 20:46

OK, das hab ich jetzt mal gemacht. Ich habe anstelle Tabelle1 ADOSKinder eingegeben.

Muß ich nicht anstelle KNr = :KNR
KundenNr = :KundenNr
eingeben? Ich habe in jeder Tabelle die Zuordnung mit KundenNr gemacht!

Und den anderen Code muß ich beim Löschen Button eingeben, oder?

Was ist mit den anderen Tabellen, die ich so habe? muß ich immer eine neue ADOQuery erstellen?

Wenn ja, wie sieht dann der Code beim Löschen button aus wenn ich auch andere Querys erstellen muß?

MrSpock 6. Aug 2002 20:52

Hallo m-werk,

KundenNr sollte eine Variable sein, die die Kundennummer des Kunden enthält, der gerade gelöscht werden soll.

:Knr kannst du ruhig stehen lassen, da damit nur ein Parameter erzeugt wird, der einen beliebigen Namen haben darf. Die spätere Zuweisung mit ParamByName setzt dann den Parameter auf den gewünschten Wert.

Den 2. Code solltest du nicht unbedingt beim Löschen-Button eingeben, weil sonst z.B. bei anderen Wegen einen Datensatz zu löschen der Code evtl. nicht ausgeführt wird. Ich schlage vor das Ereignis AfterDelete von ADOSHaupt doppelzuklicken und dort den Code hinzuschreiben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:45 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