AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Brauche hilfe bei Rechnungs Datenbankprogramm
Thema durchsuchen
Ansicht
Themen-Optionen

Brauche hilfe bei Rechnungs Datenbankprogramm

Ein Thema von Ammersmann · begonnen am 23. Nov 2006 · letzter Beitrag vom 24. Nov 2006
Antwort Antwort
Ammersmann

Registriert seit: 19. Okt 2006
10 Beiträge
 
Delphi 5 Enterprise
 
#1

Brauche hilfe bei Rechnungs Datenbankprogramm

  Alt 23. Nov 2006, 19:30
Datenbank: Paradox • Zugriff über: BDE
Hallo,
Ich habe ein Problem mit meinem Rechnungsprogramm, und leider keine Ahnung woran das liegen könnte.

Ich beschreibe mal die Probleme wenn Euch etwas dazu einfällt wäre ich für jede Anregung dankbar.

Ich Programmiere mit Delphi 5 Ent.
Das Programm arbeitet mit Paradox Datenbanken und SQL abfragen, es wird als Kundenverwaltung und zur Rechnungs- und Angebotserstellung genutzt.

Die Tabellen Kunden.DB und Rechnungs.DB sind verknüpft über das Feld Kundennu
Die Tabellen Kunden.DB und Angebote.DB sind verknüpft über das Feld Kundennu
Die Tabellen Rechnungen.DB und Rechposten.DB sind verknüpft über das Feld RENR
Die Tabellen Angebot.DB und Anposten.DB sind verknüpft über das Feld Angebotnu

In Kunden.DB werden alle Kundendaten gespeichert.
In Rechnungs.DB werden die Hauptdaten jeder Rechnung gespeichert.
In Rechposten.DB werden die Details (einzelne Posten) zu jeder Rechnung gespeichert.
Das gleiche bei den Angeboten.

Problem 1.
Wenn ich durch die Kundendatenbank scrolle (DBGrid) werden in der Rechnungs.DB Datensätze erzeugt die nicht erwünscht sind, sie sind leer außer das Feld Kundennu das enthält dann eine Kundennummer. Ich habe keine Ahnung warum sich die Tabelle so verhält zumal das Problem bei der Angebot.DB nicht vorkommt?
Ich musste das ganze Programm deswegen vor ein paar Monaten schon ganz umbauen, da das Feld Rechnungsnummer fortlaufend sein muss und bei jedem Datensatz um 1 erhöht wird, die Rechnungsnummer passten durch die leeren Datensätze nicht mehr.
So hatte die Datentabelle Kunden.DB schon einmal 1566 Datensätze obwohl nur 56 Rechnungen angelegt waren also mehr als 1500 Leichen.

Ich hoffe ich habe Problem 1 genaugenug beschrieben, wenn jemand eine Idee hat woran das liegen könnte last es mich wissen.


Problem 2.
Bei meinem Kunden (ein Freund von mir) wo das ganze Aktuell läuft ist es schon 2mal vorgekommen das ein Angebot oder eine Rechnung die er geschrieben hat nach ein paar Tagen nicht mehr unter dem Kunden zu finden war!!
Was ich auf dem Entwickler PC nicht nachvollziehen kann.

FRAGE : Kann das vielleicht an einem Virus auf seinem PC liegen ???

Ich habe einmal selber gesehen wie er eine Rechnung bearbeitet hat, alle Daten waren eingetragen alles OK. Dann wurden in Rechposten.DB ca. 23 Posten zu diese Rechnung neu eingetragen, nach dem schließen von dem Formular und erneutem öffnen waren alle Daten noch da.
Als ich das Programm beendet habe und neu Startete traute ich meinen Augen nicht die neu Eingetragen Posten waren alle weg nur die Posten die schon vorher eingetragen waren standen in der Tabelle.
Ich kann das alles nicht auf dem Entwickler PC nachvollziehen ganz egal was ich mache diese Fehler treten bei mir nicht auf.

Ein Virus ????????

ICH BITTE EUCH UM HILFE


PS: ein Programm wo Rechnungen und Angebote verschwinden ist ein fall für die
Tonne!!!
Habe aber sehr viel Arbeit in dem Projekt stecken.
Für Problem 1 habe ich eine Notlösung gefunden aber Problem 2 ist mir ein Rätzel.
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#2

Re: Brauche hilfe bei Rechnungs Datenbankprogramm

  Alt 23. Nov 2006, 19:40
Hi,

werden die Daten vlt. nur temporaer gespeichert und nicht in der DB gespeichert? Mir faellt grad der richtige Begriff nicht dazu ein. Wenn du mit DBs arbeitest und was veraenderst werden die Daten nicht sofort in der DB gespeichert sondern irgendwie erst lokal.

Vlt. koennte das das Problem sein dass die Daten nicht mehr vorhanden sind!
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Maja Jessica

Registriert seit: 16. Apr 2005
Ort: Dortmund
95 Beiträge
 
Delphi 4 Standard
 
#3

Re: Brauche hilfe bei Rechnungs Datenbankprogramm

  Alt 23. Nov 2006, 19:45
FlushBuffers ?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Brauche hilfe bei Rechnungs Datenbankprogramm

  Alt 23. Nov 2006, 19:47
Hallo,

wenn du das Scrollen im DBGrid nicht für das Anhängen eines neuen Datensatzes nutzen willst, dann findest du im Forum hier Ansätze um das zu verhindern. Ist es aber von dir so gewollt, dann solltest du im DBGrid die Options überprüfen. CancelOnExit könnte auf False gesetzt sein und dein erstes Problem verursachen.

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#5

Re: Brauche hilfe bei Rechnungs Datenbankprogramm

  Alt 23. Nov 2006, 20:11
Ist Autocommit auf false in seinem Fall und bei Dir true in den BDE-Einstellungen?
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Ammersmann

Registriert seit: 19. Okt 2006
10 Beiträge
 
Delphi 5 Enterprise
 
#6

Re: Brauche hilfe bei Rechnungs Datenbankprogramm

  Alt 23. Nov 2006, 23:39
Zitat:
Hi,

werden die Daten vlt. nur temporaer gespeichert und nicht in der DB gespeichert? Mir faellt grad der richtige Begriff nicht dazu ein. Wenn du mit DBs arbeitest und was veraenderst werden die Daten nicht sofort in der DB gespeichert sondern irgendwie erst lokal.

Vlt. könnte das das Problem sein dass die Daten nicht mehr vorhanden sind!
cu
Mackhack
Hallo Mackhack,

Die Daten werden ja mit Post in die Datenbank geschrieben!!!
Hier der Code!

procedure TForm4.FlatSpeedButton3Click(Sender: TObject);
begin
FlatSpeedButton1Click(Form4); // für die Berechnungen
datamodule3.Table8.edit; // Rechposten.DB
datamodule3.Table8.post;
datamodule3.Table6.edit; // Rechnungs.DB
datamodule3.Table6.post;
Form4.Close;
end;



Zitat:
FlushBuffers ?
// Leider keine Ahnung!!!!


Zitat:
Hallo,

wenn du das Scrollen im DBGrid nicht für das Anhängen eines neuen Datensatzes nutzen willst, dann findest du im Forum hier Ansätze um das zu verhindern. Ist es aber von dir so gewollt, dann solltest du im DBGrid die Options überprüfen. CancelOnExit könnte auf False gesetzt sein und dein erstes Problem verursachen.

Freundliche Grüße vom marabu
Hallo,
da hast Du mich leider Falsch verstanden, im Hauptfenster der Anwendung befindet sich ein DBGrid das die Daten der Kunden anzeigt.
Wenn ich durch dieses DBGrid Scrolle werden in der Tabelle Rechnungen.DB Datensätze eingefügt nicht in der Tabelle Kunden.

Ich hatte mich oben leider verschrieben mit dem Satz:So hatte die Datentabelle Kunden.DB schon einmal 1566 Datensätze obwohl nur 56 Rechnungen angelegt waren also mehr als 1500 Leichen

Der sollte so lauten:So hatte die Datentabelle Rechnungen.DB schon einmal 1566 Datensätze obwohl nur 56 Rechnungen angelegt waren also mehr als 1500 Leichen.




Zitat:
Ist Autocommit auf false in seinem Fall und bei Dir true in den BDE-Einstellungen?
Hallo,
diese Einstellung kenne ich leider nicht, auch in der Hilfe von der BDE nicht zu finden!
Wofür ist diese Einstellung ? Was lost sie aus ??



DANKE AN ALLE FÜR DIE ANTWORTEN !!!!!
Gruß RL
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: Brauche hilfe bei Rechnungs Datenbankprogramm

  Alt 24. Nov 2006, 07:12
Guten Morgen,

wenn sich deine Rechnungen vermehren indem du durch die Kunden scrollst, dann erzeugst du vielleicht in einem event handler der Kundentabelle (OnAfterScroll oder OnBeforeScroll) oder der zugehörigen Datenquelle (OnDataChange) eine neue Rechnung. Wahrscheinlich hast du die beiden Tabellen auch in einer Master-Detail-Beziehung verknüpft. Das Ausführen von Edit() und Post() direkt hintereinander, in Verbindung einer solchen Verknüpfung würde die leeren Rechnungssätze erklären.

Freundliche Grüße
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Brauche hilfe bei Rechnungs Datenbankprogramm

  Alt 24. Nov 2006, 08:56
Hallo,

1. benenne deine Tabellen richtig
Table6 -> Table_Bill

2. wie schon gesagt, könnte ein Table.Edit + Table.Post auch einen leeren Datensatz erzeugen

3. Schreibe deine TTable-Methoden in eigene Proceduren
dann kannst du das besser debuggen

4. FlushBuffers= DbiSaveChanges(Table.Handle)
ev. uses Bde oder DbiProcs (bie älterem Delphi)

ansonsten sehen andere deine Änderungen nicht

5. vor jedem Lesen Table.Refresh,
ansonsten siehst du keine Änderungen der anderen

6. cached updates vermeiden

7. Paradox als Dateidatenbank ist denkbar ungeeignet
für deine Sache (siehe 4., 5.)

8. ordentlich debuggen
eine Funktion ausführen, Programm beenden, Test
so hättest du deine Datenleiche gefunden

mit 4. geht das auch im laufenden Betrieb

Ich kann dir ein kleines Tool schicken (sql-it),
mit dem du deine Tabellen ansehen kannst.


Heiko
PS: andere Datenbank benutzen schreibe ich gar nicht mehr
Heiko
  Mit Zitat antworten Zitat
Ammersmann

Registriert seit: 19. Okt 2006
10 Beiträge
 
Delphi 5 Enterprise
 
#9

Re: Brauche hilfe bei Rechnungs Datenbankprogramm

  Alt 24. Nov 2006, 12:11
Hallo,

Zitat:
(OnAfterScroll oder OnBeforeScroll)
// werden in dem Projekt nicht benutzt!!

Ein paar Fragen hätte ich dazu noch!!
Zitat:
Wahrscheinlich hast du die beiden Tabellen auch in einer Master-Detail-Beziehung verknüpft.
Was hat die Master-Detail-Beziehung damit zutun die besteht auch zwischen Kunden.DB
und Angebot.DB wo das Problem nicht auftaucht.

Zitat:
Das Ausführen von Edit() und Post() direkt hintereinander, in Verbindung einer solchen Verknüpfung würde die leeren Rechnungssätze erklären.
Ohne die Tabelle vorher in den Edit-modus zu bringen kann ich Post doch nicht ausführen oder wie ist das gemeint??


Hallo Hoika,
Zitat:
4. FlushBuffers= DbiSaveChanges(Table.Handle)
ev. uses Bde oder DbiProcs (bei älterem Delphi)
Es tut mir wirklich leid aber ich bin ein Hobby Programmierer und weis nicht was Du oder Ihr mir damit sagen wollt??
Habe aber an der BDE keine Veränderungen vorgenommen!!


Zitat:
5. vor jedem Lesen Table.Refresh,
ansonsten siehst du keine Änderungen der anderen

Welche anderen das Programm läuft nur auf einen Rechner??

Zitat:
7. Paradox als Dateidatenbank ist denkbar ungeeignet
für deine Sache (siehe 4., 5.)
Wieso??
Welche Datenbank würdet Ihr mir den anraten??
Ich muss gestehen ich habe bis jetzt auf Bequemlichkeit und fehlendem Wissen nur mit Paradox gearbeitet.


DANKE AN ALLE!!
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: Brauche hilfe bei Rechnungs Datenbankprogramm

  Alt 24. Nov 2006, 12:23
Hallo,

deine Bequemlichkeit rächt sich jetzt leider.
Ich würde Firebird (2) nehmen,
es gibt dort auch eine embedded-Verison, du muss man gar nichts
installieren (läuft dann aber auch nur auf einem Rechner).

Table6.Post; // argz, wieder diese Nummner !!
DbiSaveChanges(Table6.Handle); // erst jetzt ist es wirklich auf der Platte


Table.Edit;
Table.Post;

erzeugt unter Umständen einen leeren Datensatz
(wenn der Cursor hinter dem letzten Datensatz steht, glaube ich).


Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:26 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