Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   FreePascal (https://www.delphipraxis.net/74-freepascal/)
-   -   2 kleine Datenbank fragen (https://www.delphipraxis.net/177354-2-kleine-datenbank-fragen.html)

ironman139 2. Nov 2013 09:34

2 kleine Datenbank fragen
 
Hallo ,

Weis einer von euch wie der Syntax lauten muss , wenn ich einer Datenbank einen Eintrag aktualisieren will.
Bei meinem Programm gibt es eine Auftragsnummer , die sich immer ändert wenn man einen Button drückt
Also immer n+1
Wie muss ih das lösen , dass diese Auftragsnummer immer gespeichert wird und beim nächsten programmstart wieder angezeigt wird ?

Mit freundlichen Grüßen Iron

Andreas L. 2. Nov 2013 09:40

AW: 2 kleine Datenbank fragen
 
Mit einem SQL-Statement:

z. B.:
Code:
INSERT INTO dbname (feldname) VALUES ("Wert")
Je nach verwendeten DBMS weicht die genaue SQL-Syntax etwas ab.

ironman139 2. Nov 2013 09:51

AW: 2 kleine Datenbank fragen
 
Das mit dem INSERT INTO funktioniert leider nicht, da kommt immer dass die Zeile schon einen Wert enthält
Werde später mal kurz den Programm Code posten

Andreas L. 2. Nov 2013 10:36

AW: 2 kleine Datenbank fragen
 
Zitat:

Zitat von ironman139 (Beitrag 1234245)
Das mit dem INSERT INTO funktioniert leider nicht, da kommt immer dass die Zeile schon einen Wert enthält
Werde später mal kurz den Programm Code posten


Opps, ich meinte nicht INSERT (fügt einen neuen Datensatz ein) sondern UPDATE. Sorry :oops:

Code:
UPDATE
  table_name
SET
  column1 = value1,
  column2 = value2,...
WHERE
  some_column = some_value;
http://www.w3schools.com/sql/sql_update.asp

Perlsau 2. Nov 2013 15:38

AW: 2 kleine Datenbank fragen
 
@ironman
Geht's um eine Auftragsverwaltung, in der eine fortlaufende Auftragsnummer vonnöten ist? Das löst du mit einem AutoInc-Feld. Welche Datenbank verwendest du? Multi-User oder Single-User-Datenbank?

ironman139 2. Nov 2013 18:20

AW: 2 kleine Datenbank fragen
 
Ja genau es handelt sich um eine Auftragsnummer.

Ich verwende SQLite


Delphi-Quellcode:
SQLQuery1.Close;

  SQLQuery1.SQL.Text:='INSERT INTO tblvar (Auftragsnummer) VALUES (NULL, :Auftragsnummer)';
  SQLQuery1.ParamByName('Auftragsnummer').AsString:= IntToStr(v) ;
  SQLQuery1.ExecSQL;
  SQLTransaction1.commit;

Das wäre mein Code (v) errechne ich immer durch v:=v+1;

Sir Rufo 2. Nov 2013 18:53

AW: 2 kleine Datenbank fragen
 
Für Auftrags-, Rechnungs-. etc. Nummern habe ich bisher niemals AutoInc Felder gesehen.

Jeder Beleg hatte eine eindeutige ID (für die interne Verwaltung) welche mit einem AutoInc eindeutig gehalten wurde. Die Belegnummernvergabe wurde aber anders gelöst.

z.B. mit einer Tabelle für diese Letzten Nummern.

Mit Sqlite z.B. so:
SQL-Code:
begin transaction;

update Value
set Value = Value + 1 
where Section="RECH";

select Value
from LastNumbers
where Section="RECH";

commit;
Um garantiert keine Lücken innerhalb einer Periode zu bekommen, sollte man innerhalb dieser Transaktion auch gleich den gesamten Beleg speichern ;)

ironman139 2. Nov 2013 19:30

AW: 2 kleine Datenbank fragen
 
So siehts momentan aus:

Delphi-Quellcode:
 v:=v+1;

    Label16.caption:=IntToStr(v);


  SQLQuery1.Close;

  SQLQuery1.SQL.Text:='UPDATE tblvar SET (Auftragsnummer) VALUES ( :Auftragsnummer)';
  SQLQuery1.ParamByName('Auftragsnummer').AsString:= IntToStr(v) ;
  SQLQuery1.ExecSQL;
  SQLTransaction1.commit;
Bei der OnCreate Methode lass ich v auf den Wert der Tabelle setzten.
Aber irgendwie funktioniert das so nicht :(

Edit: Ich hab mir gerade einen neuen Ansatz überlegt, da ja die Auftragsnummer mit dem Patient verknüpft werden muss. Anstatt die Auftragsnummer in einer extra Tabelle zu speichern kann ich die ja auch in die Patiententabelle mit reinspeichern und wenn ich dann das Programm wieder öffne, den letzten Eintrag auslesen und dann 'letzter Eintrag +1' Oder geht das so nicht ?



Gruß iron

Perlsau 3. Nov 2013 04:44

AW: 2 kleine Datenbank fragen
 
Zitat:

Zitat von ironman139 (Beitrag 1234301)
Oder geht das so nicht ?

Soweit mir als selbständigem Gewerbetreibenden bekannt, verlangt das Finanzamt, daß Auftragsnummern fortlaufend und lückenlos zu führen sind. Nur so ist für das Finanzamt nachvollziehbar, daß bei der Steuererklärung keine Aufträge unterschlagen bzw. alle Einnahmen angegeben wurden.

Offenbar möchtest du eine Praxis-Verwaltungssoftware schreiben. Da wäre es hilfreich, sich zuerst einmal die bekannten und in scharfer Konkurrenz zueinander stehenden Produkte anzuschauen. Medizinische Betriebe – also Ärzte, Krankengymnastik-Betriebe usw. – unterliegen gewissen Bestimmungen hinsichtlich ihrer Verwaltungssoftware. Dazu gehören u.a. eine übersichtliche Terminverwaltung, Patientenverwaltung, Therapieverwaltung, Auftragsverwaltung, Rechnungsverwaltung, Rezeptverwaltung, Krankenkassen-Abrechnungsverwaltung, Kartenlese-Einheit und vieles mehr. Wie diese Bestimmungen genau sind, solltest du vielleicht vor Entwicklungsbeginn recherchieren.

ironman139 3. Nov 2013 08:48

AW: 2 kleine Datenbank fragen
 
Nein nein, so profesionell soll das Programm gar nicht werden, dafür haben wir andere.
Das Programm dient zum ,, Laufzettel" schreiben für ein Produkt was Hausintern gefertigt wird.
Der Zettel dient nur um die Kiste zu beschriften, und eben um ein paar Daten dem Patient zu zu ordnen.
Dieser wird am Ende des Produktionsprozesses wieder entsorgt.


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