Datenbank-Zeilen drucken
-
- Beiträge: 18
- Registriert: Do 11. Feb 2016, 17:13
Datenbank-Zeilen drucken
Hallo,
erstmal ein servus an das Forum, ich bin neu hier und versuche gerade mein erstes, etwas anspruchsvolleres Programm zu schreiben.
Ich möchte mir ein Programm basteln, mit dem ich Bestellungen in eine Datenbank hinterlegen kann.
Dazu habe ich mir eine Dbase Datenbank angelegt und mit einem DBGrid verknüpft.
Anhand einer Kunden ID (Auswahl per LookUpCombobox) möchte ich später mir alle Zeilen die mit dieser ID anfangen ausdrucken (Mit dem Bild im Anhang vielleicht besser zu verstehen).
Kommen später wieder Bestellungen von diesem Kunden dazu, möchte ich aber die bereits gedruckten Spalten nicht erneut Drucken. Sie sollen allerdings auch nicht aus der Datenbank gelöscht werden...
Wie macht man sowas am besten? Bzw. nach was sollte ich da googlen?
Finde leider nichts zu diesem Thema.
Sollten wichtige Informationen fehlen, bitte ich das zu entschuldigen.
Gruß,
Purzel
erstmal ein servus an das Forum, ich bin neu hier und versuche gerade mein erstes, etwas anspruchsvolleres Programm zu schreiben.
Ich möchte mir ein Programm basteln, mit dem ich Bestellungen in eine Datenbank hinterlegen kann.
Dazu habe ich mir eine Dbase Datenbank angelegt und mit einem DBGrid verknüpft.
Anhand einer Kunden ID (Auswahl per LookUpCombobox) möchte ich später mir alle Zeilen die mit dieser ID anfangen ausdrucken (Mit dem Bild im Anhang vielleicht besser zu verstehen).
Kommen später wieder Bestellungen von diesem Kunden dazu, möchte ich aber die bereits gedruckten Spalten nicht erneut Drucken. Sie sollen allerdings auch nicht aus der Datenbank gelöscht werden...
Wie macht man sowas am besten? Bzw. nach was sollte ich da googlen?
Finde leider nichts zu diesem Thema.
Sollten wichtige Informationen fehlen, bitte ich das zu entschuldigen.
Gruß,
Purzel
- af0815
- Lazarusforum e. V.
- Beiträge: 6780
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Datenbank-Zeilen drucken
Mach dir ein Statusfeld in der Datenbank, dann kannst du dort auch hinterlegen ob das schon gedruckt wurde. Eventuell das ganze Bitkodieren, wenn du mehr Stati benötigst.
Zum Drucken selbst, suche mal nach LazReports in Lazarus. Eventuell in den Menüpunkt Tools/Example Projects (in einem englischen Lazarus) schauen und dort dann lazreports eingeben und die Beispiele mal ansehen.
Andreas
Zum Drucken selbst, suche mal nach LazReports in Lazarus. Eventuell in den Menüpunkt Tools/Example Projects (in einem englischen Lazarus) schauen und dort dann lazreports eingeben und die Beispiele mal ansehen.
Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 18
- Registriert: Do 11. Feb 2016, 17:13
Re: Datenbank-Zeilen drucken
Hallo,
das mit Lazreport funktioniert schon prima. Habe mir ein Protokoll erstellt und kann jetzt auch alle Datenbankeinträge wie gewünscht drucken.
Ich möchte aber mit einer DBLookUpCombobox nur eine bestimmte Kunden ID ausdrucken. In meiner DBLookUpCombobox werden aber alle ID´s angezeigt, auch doppelte.
Wie kann ich den jetzt doppelte Einträge aus der DBLookUpCombobox entfernen und das Lazreport-Protokoll nur mit den selektierten Zeilen mit der entsprechenden Kunden ID "füttern"?
Danke
EDIT: Das Filtern der Datenbank würde mich brennend interessieren

das mit Lazreport funktioniert schon prima. Habe mir ein Protokoll erstellt und kann jetzt auch alle Datenbankeinträge wie gewünscht drucken.
Ich möchte aber mit einer DBLookUpCombobox nur eine bestimmte Kunden ID ausdrucken. In meiner DBLookUpCombobox werden aber alle ID´s angezeigt, auch doppelte.
Wie kann ich den jetzt doppelte Einträge aus der DBLookUpCombobox entfernen und das Lazreport-Protokoll nur mit den selektierten Zeilen mit der entsprechenden Kunden ID "füttern"?
Danke
EDIT: Das Filtern der Datenbank würde mich brennend interessieren


- af0815
- Lazarusforum e. V.
- Beiträge: 6780
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Datenbank-Zeilen drucken
Bei DBase habe ich k.A wie man doppelte Einträge unterdrückt. Laut Doku geht mit einem Index und ixUnique. Siehe http://wiki.freepascal.org/Lazarus_Tdbf ... ndex_Files (Dort aber nicht direkt erwähnt). Wenn funktioniert das aber nur bein Einfügen der Daten, nicht später.
Nur mit den selektierten Einträgen füttern, kannst du über die Filterfunktion von TDBF. Siehe hier http://wiki.freepascal.org/Lazarus_Tdbf ... al#Filters
Bei SQL Datenbanken arbeit man mit distinct, dann werden doppelte Einträge unterdrückt. Mit where kann filtern. BTW. Sqllite ist ein guter Ersatz für DBase. Man hat alle Möglichkeiten von SQL, benötigt nur ein zusätzliche Dll.
Nur mit den selektierten Einträgen füttern, kannst du über die Filterfunktion von TDBF. Siehe hier http://wiki.freepascal.org/Lazarus_Tdbf ... al#Filters
Bei SQL Datenbanken arbeit man mit distinct, dann werden doppelte Einträge unterdrückt. Mit where kann filtern. BTW. Sqllite ist ein guter Ersatz für DBase. Man hat alle Möglichkeiten von SQL, benötigt nur ein zusätzliche Dll.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 18
- Registriert: Do 11. Feb 2016, 17:13
Re: Datenbank-Zeilen drucken
ich bin mittlerweile auf SQLite3 umgestiegen. Hab gelesen das es oft Probleme mit DBase geben soll.
Wie funktioniert das Filtern mit WHERE?
Wie initialisiere ich das alles?
Danke!
Wie funktioniert das Filtern mit WHERE?
Wie initialisiere ich das alles?
Danke!
-
- Beiträge: 18
- Registriert: Do 11. Feb 2016, 17:13
Re: Datenbank-Zeilen drucken
Code: Alles auswählen
select * from sqProtokoll where ID = Edit1.Text;
Re: Datenbank-Zeilen drucken
Man sollte möglichst mit Parametern arbeiten, siehe http://wiki.freepascal.org/SqlDBHowto/d ... er_Abfrage
z.B.:
z.B.:
Code: Alles auswählen
SQLQuery1.SQL.Text := 'SELECT * FROM sqProtokoll WHERE id = :aid';
SQLQuery1.ParamByName('aid').AsInteger := IntToStr(Edit1.Text);
SQLQuery1.Open;
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
-
- Beiträge: 18
- Registriert: Do 11. Feb 2016, 17:13
Re: Datenbank-Zeilen drucken
Also ich hab´s jetzt mal so versucht, da ich keine SQLQuery verwende.
Leider passiert aber nichts...Warum?
Code: Alles auswählen
procedure TForm6.Button1click(Sender: TObject);
begin
Form5.TSqlite3Dataset1.Filter := 'ID =' + QuotedStr(DBLookupcomboBox1.Text);
Form5.TSqlite3Dataset1.Filtered := true;
end;
Leider passiert aber nichts...Warum?
Re: Datenbank-Zeilen drucken
Nach dem Screenshot oben ist das Feld ID eine Zahl. Versuch's mal ohne QuotedStr.
-
- Beiträge: 18
- Registriert: Do 11. Feb 2016, 17:13
Re: Datenbank-Zeilen drucken
Gleicher Effekt. Nämlich keiner 

Re: Datenbank-Zeilen drucken
Warum nicht?purzel1994 hat geschrieben:Also ich hab´s jetzt mal so versucht, da ich keine SQLQuery verwende.
Ich persönlich kenne mich mit Sqlite3DS nicht aus. In ein paar kleineren Projekten habe ich SQLDBLaz im Einsatz, in zwei größeren nutze ich ZEOS.
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
Re: Datenbank-Zeilen drucken
Ist der/die/das Dataset offen?
Übrigens: DataSets direkt auf einem anderen Formular können dir bald graue Haare wachsen lassen, weil die Unit-Struktur des Projekts schnell unübersichtlich wird und zu Zirkulärreferenzen führen kann. Günstiger ist es, allgemein verwendete Datasets auf einem zentralen TDataModule zu halten, auf das alle Formulare zugreifen, die die Datasets brauchen.
Übrigens: DataSets direkt auf einem anderen Formular können dir bald graue Haare wachsen lassen, weil die Unit-Struktur des Projekts schnell unübersichtlich wird und zu Zirkulärreferenzen führen kann. Günstiger ist es, allgemein verwendete Datasets auf einem zentralen TDataModule zu halten, auf das alle Formulare zugreifen, die die Datasets brauchen.
-
- Beiträge: 18
- Registriert: Do 11. Feb 2016, 17:13
Re: Datenbank-Zeilen drucken
Ich verstehe nicht was du mit "offen" meinst. Aktiv ist es, die Daten werden auf meinem DBGrid auch angezeigt, nur eben nicht gefiltert....
- af0815
- Lazarusforum e. V.
- Beiträge: 6780
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Datenbank-Zeilen drucken
Kannst mal eine Query verwenden, den die sind für die selektion der Daten da. Die Query ist spezialisiert, die Select, insert, delete und update Statements effizient zu verarbeiten.
Alternativ kannst du mal ein Minimalbeispiel (nur Source) zusammenstellen, an dem man dein Problem besser sieht und auch nachvollziehen kann.
Alternativ kannst du mal ein Minimalbeispiel (nur Source) zusammenstellen, an dem man dein Problem besser sieht und auch nachvollziehen kann.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 18
- Registriert: Do 11. Feb 2016, 17:13
Re: Datenbank-Zeilen drucken
Muss ich vielleicht noch ein refresh vom DBGrid machen?
Mit SQLQuery passiert auch nichts....
Mit SQLQuery passiert auch nichts....