Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Daten in StringGrid einlesen und in DB abspeichern (https://www.delphipraxis.net/29096-daten-stringgrid-einlesen-und-db-abspeichern.html)

muenchner 3. Sep 2004 21:12


Daten in StringGrid einlesen und in DB abspeichern
 
Hallo ich bins schon wieder!

Vielleicht kann mir jemand sagen, was ich bei diesem code verkehrt habe, dass 5x hintereinander nur die 1. Zeile geschrieben wird.
Auuserdem bräuchte ich noch Hilfe, um die StringGrid in eine Tabelle abzuspeichern.

Ich möchte die Daten von einer Tabelle auslesen, in die StringGrid eintragen und anschliesend in eine andere DB abspeichern.

Vielleicht kann mir jemand helfen.

SQL-Code:
var
sSQL, s1SQL: String;
 i: Integer;
begin

try
Query1.Close;
Query1.SQL.Clear;
sSQL := 'SELECT VertragNr, KundenNr, Bezeichnung FROM Vertrag where AbrechPartner = "' + DBLookupComboBox1.KeyValue + ';

Query1.sql.add(sSQL);
Query1.Active:=True;

except
end;
stringgrid1.Cells[0,0] := 'id';
i := 1;
try
        stringgrid1.Cells[1,0] := 'Vertrag:';
        stringgrid1.Cells[2,0] := 'KundenNr:';
        stringgrid1.Cells[3,0] := 'Vertrag:';
        while not query1.Eof do begin
       
        stringgrid1.Cells[3,i] := tblVertrag1.FieldByName('KundenNr').AsString;
        stringgrid1.Cells[2,i] := tblVertrag1.FieldByName('VertragNr').AsString;
        query1.Next;
    i := i+1;
    end;
Danke im Voraus

Rene

plautzer 3. Sep 2004 22:57

Re: Daten in StringGrid einlesen und in DB abspeichern
 
Hi,

ich würde erstmal meinen das deine sSQL nicht ganz richtig ist:

SQL-Code:
sSQL := 'SELECT VertragNr, KundenNr, Bezeichnung FROM Vertrag where AbrechPartner =' + DBLookupComboBox1.KeyValue;
oder

SQL-Code:
sSQL := 'SELECT VertragNr, KundenNr, Bezeichnung FROM Vertrag where AbrechPartner =:a';
und dann den parameter erstzen:

Delphi-Quellcode:
Query.Params.ParamByName('a').Value:=DBLookupComboBox1.KeyValue;
Vielleicht hilft es.

Plautzer

muenchner 3. Sep 2004 23:11

Re: Daten in StringGrid einlesen und in DB abspeichern
 
Hallo Plautzer!

Wenn ich die SQL auf eine DBGrid anwende, funktioniert es.

Es listet mir genau das auf, was ich möchte. Kann es sein, dass es bei StrinGrid anders ist?

Gruß Rene

Hansa 3. Sep 2004 23:41

Re: Daten in StringGrid einlesen und in DB abspeichern
 
Das ganze sieht etwas nach Konfuzius aus. :mrgreen:

Z.B. hier :

Delphi-Quellcode:
sSQL := 'SELECT VertragNr, KundenNr, Bezeichnung FROM Vertrag where AbrechPartner = "' + DBLookupComboBox1.KeyValue + ';
  • Anführungszeichen leiten etwas ein und müssen auch abgeschlossen werden. Davon sehe ich nichts.
  • In den (noch relativ wenigen) geposteten Source-Zeilen tauchen bereits zwei Exception Blöcke auf, von denen einer IMHO nicht mal richtig abgeschlossen ist. 8) Sie Exception Behandlung dient aber nur dazu, wie der Name schon sagt, wirklich kapitale Fehler abzufangen.
  • Das Wort EOF taucht nirgends auf.
  • da Delphi-Tags verwendet wurden, nehme ich an, daß der Originalquelltext ähnlich aussieht, also ziemlich chaotisch. 8)

Bevor der Source nicht einigermaßen verständlich und logisch aufgebaut ist, kommst du wohl nicht sehr weit. Früher vielleicht mal C gemacht ? :lol:

muenchner 4. Sep 2004 09:25

Re: Daten in StringGrid einlesen und in DB abspeichern
 
Hallo Hansa!

Habe vor ca 20 Jahren Dbsase gemacht, seitdem nichts mehr. Also totaler Anfänger.

Aber vielleicht kannst Du mir trotzdem ein paar Tips geben.

Danke

ereetzer 4. Sep 2004 09:31

Re: Daten in StringGrid einlesen und in DB abspeichern
 
hmm, sollte das hier:

Delphi-Quellcode:
        stringgrid1.Cells[1,0] := 'Vertrag:';
        stringgrid1.Cells[2,0] := 'KundenNr:';
        stringgrid1.Cells[3,0] := 'Vertrag:';
nicht eher so sein? :

Delphi-Quellcode:
        stringgrid1.Cells[0,1] := 'Vertrag:';
        stringgrid1.Cells[0,2] := 'KundenNr:';
        stringgrid1.Cells[0,3] := 'Vertrag:';
cu
ereetzer

muenchner 4. Sep 2004 11:02

Re: Daten in StringGrid einlesen und in DB abspeichern
 
Liste der Anhänge anzeigen (Anzahl: 1)
Mein Quellcode lauted:

SQL-Code:
procedure TForm8.DBLookupComboBox1CloseUp(Sender: TObject);
var
sSQL, s1sql: String;
 i: Integer;
begin
  i :=1;
Query1.Close;
Query1.SQL.Clear;

sSQL := 'SELECT VertragNr, KundenNr FROM Vertrag where AbrechPartner = "' + DBLookupComboBox1.KeyValue +'"';

       stringgrid1.Cells[1,0] := 'VertragNr:';
       stringgrid1.Cells[2,0] := 'KundenNr:';

Query1.sql.add(sSQL);
Query1.Active:=True;
    while not query1.Eof do begin
        stringgrid1.Cells[2,i] := tblVertrag1.FieldByName('KundenNr').AsString;
        stringgrid1.Cells[1,i] := tblVertrag1.FieldByName('VertragNr').AsString;
        i := i+1;
  query1.Next;

Query2.Close;
Query2.SQL.Clear;
s1SQL := 'SELECT Sum(Zeichensumme) As Summe FROM Vertrag where AbrechPartner ="' + DBLookupComboBox1.KeyValue +'"';

Query2.sql.add(s1SQL);
Query2.Active:=True;
Edit1.Text := (Query2.FieldValues['Summe'])

end;
end;

end.
und was dabei rauskommt, siehst du auf der Abbildung.

Mir wäre aber schon geholfen, wenn mir jemand sagen kann, wie ich die DBGrid in eine Tabelle speichern kann.

Hansa 4. Sep 2004 12:02

Re: Daten in StringGrid einlesen und in DB abspeichern
 
So läßt sich ein Stringgrid aus der Datenbank füllen :


Delphi-Quellcode:
procedure TForm8.DBLookupComboBox1CloseUp(Sender: TObject);
var
 s1sql: String;
 i: Integer;
begin
  i :=1;
  Dataset1.Close;
  Dataset1.SelectSQL.Text := 'SELECT VertragNr, KundenNr FROM Vertrag where AbrechPartner = "' + DBLookupComboBox1.KeyValue +'"';
  Dataset1.Open;   // Datenmenge steht nun bereit

  stringgrid1.Cells[1,0] := 'VertragNr:';
  stringgrid1.Cells[2,0] := 'KundenNr:';

  while not Dataset1.Eof do begin
    stringgrid1.Cells[1,i] := Dataset1.FieldByName ;('VertragNr').AsString;
    stringgrid1.Cells[2,i] := Dataset1.FieldByName('KundenNr').AsString;
        i := i+1;
    Dataset1.Next;
  END;
end;
Das unnötige habe ich rausgeschmissen und den Source aufgeräumt. :lol: Die Summe am Schluß würde ich vorerst mal außer Acht lassen.

muenchner 4. Sep 2004 12:22

Re: Daten in StringGrid einlesen und in DB abspeichern
 
Hallo Hansa!

Habe es probiert, funktioniert SUPER, wenn Du mir noch sagen könntest, wie ich das in eine DB speichern kann, wäre ich Dir übeaus dankbar.

Rene

Hansa 4. Sep 2004 12:42

Re: Daten in StringGrid einlesen und in DB abspeichern
 
Sehe ich das richtig : du willst Daten erst einmal in das Stringgrid lesen, sie dann ändern und dann zurückschreiben ? Leider muß ich aber sofort weg.

muenchner 4. Sep 2004 13:05

Re: Daten in StringGrid einlesen und in DB abspeichern
 
Hallo Hansa!

Ich möchte die Daten in die StringGrid einlesen, als Abrechnung ausdrucken, und dann in eine DB mit dem aktuellen Datum eintragen.

Danke

grayfox 4. Sep 2004 14:25

Re: Daten in StringGrid einlesen und in DB abspeichern
 
hallo rene!

und was wäre wenn...
du deine abrechenbaren datensätze, die du mit der query ermittelst, gleich in eine 'rechnungen-tabelle' einträgst und dort das datum aktualisierst? wieso gehst du den umweg über ein stringgrid?

zum erstellen eines reportes verwende ich zusätzlich das boolsche feld 'gedruckt'. vor dem rechnungsdruck frage ich alle einträge ab, die noch nicht gedruckt wurden und stelle das feld, sobald man nach dem drucken die frage nach dem 'ordnungsgemässen ausdruck' mit OK beantwortet, auf true.
(es kann ja mal vorkommen, dass sich das papier verknittert oder kein papier mit firmenkopf im drucker liegt - somit bekommt man eine zweite chance :) )

mfg, stefan

muenchner 4. Sep 2004 14:50

Re: Daten in StringGrid einlesen und in DB abspeichern
 
Hallo Grayfox!

Danke für die Idee, so werde ich das mal probieren.

Trotzdem würde es mich interessieren, wie das fubktioniert.
Habe nähmlich erst zu programieren angefangen, und möchte soviel wie möglich dazulernen.

Danke

Rene

grayfox 4. Sep 2004 15:05

Re: Daten in StringGrid einlesen und in DB abspeichern
 
wenn du dich für stringgrids interessiert, dann ist es am einfachsten, du ziehst eins auf dein formular , klickst auf F1 und siehst dir seine eigenschaften und methoden an.

bei cells findest du zu folgendes

Zitat:

Die Eigenschaft Cells enthält für jede Zelle des Gitters einen String.

property Cells[ACol, ARow: Integer]: string;

Beschreibung
Mit Cells können Sie auf den String einer bestimmten Gitterzelle zugreifen. ACol gibt die Spalte, ARow die Zeile der Zelle an. Die Zählung der Spalten und Zeilen beginnt bei 0.
Die Eigenschaften ColCount und RowCount legen die Größe des Arrays fest.
Über die Eigenschaft Objects können Sie auf die Objekte zugreifen, die den Strings zugeordnet sind.
wie du siehst, ist ein stringrid nichts anderes als ein 2-dimensionales array

mfg, stefan

muenchner 4. Sep 2004 16:13

Re: Daten in StringGrid einlesen und in DB abspeichern
 
Hallo Grayfox!

Danke für die Auskunft, wieder einiges dazugelernt.

Ciao (bis zum nächsten mal)

Rene

grayfox 4. Sep 2004 19:38

Re: Daten in StringGrid einlesen und in DB abspeichern
 
bitte, bitte! dafür sind die älteren forumerianer doch da.

gruss, stefan

ps: ein positives feedback tut auch mal gut ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:48 Uhr.

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