Aphadias hat geschrieben:Moin,
ich habe ein Problem festgestellt. Jeder Datensatz soll ja einmalig sein. Wenn ich jetzt ein öffne und dann wieder speichere... dann legt er ja den immer neu an. Der soll aber den alten Text überschreiben.
Aktuell speichere ich mit dem Code:
Code: Alles auswählen
Form2.SQLQuery1.Append; [/quote] Hast Du einmal F1 gedrückt und nachgelesen, was die Funktion Append der Query-komponente macht? Wenn nicht, dann solltest Du dies einmal dringend nachholen, denn dort stehen bestimmt noch andere Funktionen mit denen man den aktuellen Datensatz [color=#FF0000][b]EDIT[/b][/color]ieren kann. .
MySQL Datensätze einlesen [HILFE]
-
- Beiträge: 179
- Registriert: Mi 2. Sep 2015, 11:09
- OS, Lazarus, FPC: Lazaurus 2.2.4 FPC 3.2.2
- CPU-Target: Windows 32/64bit
Re: MySQL Datensätze einlesen [HILFE]
Re: MySQL Datensätze einlesen [HILFE]
@Aliobaba UPDATE ist mir klar... nur ich möchte gerne bei meinem quelltext bleiben so wie er ist
@af0815 ich probiere es mal so... hatte nicht das append am anfang in betracht gezogen sondern den restlichen quelltext... ich probiere da nachher mal was
@Tbug danke für den Tipp F1... problem nur warum auch immer geht nicht bei mir ^^... aber ich habe mal unter Hilfe-> CHM-Hilfe gekuckt und denke mir mal du meintest das. Ich habe mal bei Append reingeschaut... theoretisch muss ich ja nur aus Append ein AppendContent machen (so wie ich es mit meinem Englisch verstanden habe). Also bei Append macht er einfach was neues auf. Aber wenn der Befehl AppendContent ganz am Anfang steht müsste ich den ja trotzdem erst mal sagen ob es die eine Zeile schon gibt oder sucht er sich die im Nachhinein dann selbst?
merke gerade Appendcontent baut auf einen event auf also geht das nicht... edit macht er nicht obwohl der datensatz ausgewählt ist... ich überlege mal weiter
@af0815 ich probiere es mal so... hatte nicht das append am anfang in betracht gezogen sondern den restlichen quelltext... ich probiere da nachher mal was
@Tbug danke für den Tipp F1... problem nur warum auch immer geht nicht bei mir ^^... aber ich habe mal unter Hilfe-> CHM-Hilfe gekuckt und denke mir mal du meintest das. Ich habe mal bei Append reingeschaut... theoretisch muss ich ja nur aus Append ein AppendContent machen (so wie ich es mit meinem Englisch verstanden habe). Also bei Append macht er einfach was neues auf. Aber wenn der Befehl AppendContent ganz am Anfang steht müsste ich den ja trotzdem erst mal sagen ob es die eine Zeile schon gibt oder sucht er sich die im Nachhinein dann selbst?
merke gerade Appendcontent baut auf einen event auf also geht das nicht... edit macht er nicht obwohl der datensatz ausgewählt ist... ich überlege mal weiter
-
- Beiträge: 179
- Registriert: Mi 2. Sep 2015, 11:09
- OS, Lazarus, FPC: Lazaurus 2.2.4 FPC 3.2.2
- CPU-Target: Windows 32/64bit
Re: MySQL Datensätze einlesen [HILFE]
Was macht er mit Edit nicht?Aphadias hat geschrieben:edit macht er nicht obwohl der datensatz ausgewählt ist... ich überlege mal weiter
zum Anhängen eines Datensatzes Verwendest Du:
Code: Alles auswählen
Form2.SQLQuery1.Append;
und zu Editieren eben:
Code: Alles auswählen
Form2.SQLQuery1.Edit;
Edit will set the dataset in edit mode: the contents of the current record can then be changed. This action will call the TDataset.BeforeEdit and TDataset.AfterEdit events.
-
- Beiträge: 179
- Registriert: Mi 2. Sep 2015, 11:09
- OS, Lazarus, FPC: Lazaurus 2.2.4 FPC 3.2.2
- CPU-Target: Windows 32/64bit
Re: MySQL Datensätze einlesen [HILFE]
Noch etwas wollte ich anmerken:
Warum benutzt Du eigentlich keine datensensitive Komponenten zum Anzeigen und Ändern der Datensätze?
Dann könnest Du Dir nämlich auch das sparen:
.
Warum benutzt Du eigentlich keine datensensitive Komponenten zum Anzeigen und Ändern der Datensätze?
Dann könnest Du Dir nämlich auch das sparen:
Code: Alles auswählen
Form2.SQLQuery1.FieldValues['Nummer']:=enummer.text;
Form2.SQLQuery1.FieldValues['ZAB']:=ezab.text;
Form2.SQLQuery1.FieldValues['Name']:=ename.text;
Form2.SQLQuery1.FieldValues['Vorname']:=evorname.text;
Form2.SQLQuery1.FieldValues['Geb-Datum']:=egeb.text;
.
- af0815
- Lazarusforum e. V.
- Beiträge: 6782
- 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: MySQL Datensätze einlesen [HILFE]
Er hat wahrscheinlich die TDatasource noch nicht entdeckt.TBug hat geschrieben:Warum benutzt Du eigentlich keine datensensitive Komponenten zum Anzeigen und Ändern der Datensätze?

Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 179
- Registriert: Mi 2. Sep 2015, 11:09
- OS, Lazarus, FPC: Lazaurus 2.2.4 FPC 3.2.2
- CPU-Target: Windows 32/64bit
Re: MySQL Datensätze einlesen [HILFE]
Doch, doch, das hat er schon entdeckt, denn er nutzt ja auch ein DBGrid und kein StringGrid.af0815 hat geschrieben:Er hat wahrscheinlich die TDatasource noch nicht entdeckt.SCNR

.
Re: MySQL Datensätze einlesen [HILFE]
Also ich kam die Tage noch nicht zum Basteln. Aber wenn ich append nehme und edit... dann macht er trotzdem nur ein neuen Anhang auf und editiert es nicht. Wenn ich nur edit nehme dann meckert er rum das nix ausgewählt ist obwohl ich es vorher habe. Da ich gerade auch löschen programmiere ist mir noch was anderes in Sinn gekommen bzw wie hier erwähnt Datasource. Zum öffnen rufe ich ja die Daten auf die ich im DBGrid markiert habe und hole somit die Daten ausm Datasource. Wenn ich dort Daten lösche oder ändere.... wird das dann auch automatisch im MySQL umgesetzt?
Und was ist eine Datensensitive?
Und was ist eine Datensensitive?

-
- Beiträge: 179
- Registriert: Mi 2. Sep 2015, 11:09
- OS, Lazarus, FPC: Lazaurus 2.2.4 FPC 3.2.2
- CPU-Target: Windows 32/64bit
Re: MySQL Datensätze einlesen [HILFE]
Es gibt ja zahlreiche Eingabe-Komponenten wie zum BeispielAphadias hat geschrieben:Und was ist eine Datensensitive?
TEdit, TMemo, TDateTimPicker, TListBox, TCheckBox usw..
Entsprechend geibt es für Datenbakprogrammierung die Komponenten mit Gleicher Fumktion, welche aber zusätzlich noch die Properties DataSource und DataField beinhalten.
Also:
TDBEdit, TDBMemo, TDBDateTimPicker, TDBListBox, TDBCheckBox usw..
Bei entsprechender Verknüpfung im OI werden dann automatisch die Daten des ausgewählten Datensatzes angezeigt.
Zum Rest:
Packe einmal Dein komplettes Projekt in eine Zip und lade diese hoch.
Ich glaube hier liegt ein gewaltiges Verständnisproblem zur Benutzung der Komponenten vor.
.
Re: MySQL Datensätze einlesen [HILFE]
ich habe mal am anfang gefragt ob es einen unterschied gibt zwischen edit und dbedit
und jetzt wenn du es so erwähnst macht es ein bisschen klick...
kann ich es dir auch per pn schicken? will nicht unbedingt das die ganze welt es sieht
jetzt noch mal die frage... wenn ich die sql in datasource geladen wird... und man dort etwas löscht oder editiert... wird es dann auf sql übertragen?

kann ich es dir auch per pn schicken? will nicht unbedingt das die ganze welt es sieht

jetzt noch mal die frage... wenn ich die sql in datasource geladen wird... und man dort etwas löscht oder editiert... wird es dann auf sql übertragen?
-
- Beiträge: 179
- Registriert: Mi 2. Sep 2015, 11:09
- OS, Lazarus, FPC: Lazaurus 2.2.4 FPC 3.2.2
- CPU-Target: Windows 32/64bit
Re: MySQL Datensätze einlesen [HILFE]
Ach Du heilige Marie!
Meine Befürchtung ist beim Sichten des Quellcodes noch um den Faktor 1000 übertroffen worden.
1. Du solltest den einzelnen Forms und allen Komponenten aussagekräftige Namen vergeben und nicht Form1, Form2, Button1, Label5 usw..
2. Lagere die Zugriffskomponenten wie die Connection, Query, Datasource und Transaction in ein Datenmodul aus.
3. Bitte, Bitte, versuche die Datenbank-Technik zu verstehen.
Dein Ansprechpartner um an Daten zu kommen ist nicht das Grid, sondern die Query, also nicht so wie in Deinem Quellcode:
Wenn Du schon Felder direkt ansprechen möchtest, dann nicht über den Index, sondern über den Feldnamen, denn der Feld-Index kann sich verschieben, wenn Du zum Beipiel in der Tabelle ein neues Feld anlegst.
Wie gesagt, schon gar nicht im Grid, denn die Zellen des Grids lassen sich auch verschieben.
4. Du solltest Deine Datenbankstruktur überdenken!
Ist es wirklich sinnvoll ALLES in eine einzige Tabelle zu schreiben, was passiert zum Beispiel, wenn der Patient mehr Medikamente benötigt als Felder vorgesehen sind?
Nun zur Lösung:
Alles auf Anfang und wir nehmen Stift und Papier zur Hand.
1. Welche Daten müssen in die Datenbank?
2. Wie sollte die optimale Datenbankstruktur aussehen.
3. Welche Eingabe- und/oder Ausgabefenster sind notwendig.
4. Wie sollen die einzelen Daten dargestellt werden, also mit welchen Komponenten.
und und und...
.
Meine Befürchtung ist beim Sichten des Quellcodes noch um den Faktor 1000 übertroffen worden.
1. Du solltest den einzelnen Forms und allen Komponenten aussagekräftige Namen vergeben und nicht Form1, Form2, Button1, Label5 usw..
2. Lagere die Zugriffskomponenten wie die Connection, Query, Datasource und Transaction in ein Datenmodul aus.
3. Bitte, Bitte, versuche die Datenbank-Technik zu verstehen.
Dein Ansprechpartner um an Daten zu kommen ist nicht das Grid, sondern die Query, also nicht so wie in Deinem Quellcode:
Code: Alles auswählen
Form3.evorname.Text:=DBGrid1.Columns.Items[3].Field.AsString;
Wie gesagt, schon gar nicht im Grid, denn die Zellen des Grids lassen sich auch verschieben.
4. Du solltest Deine Datenbankstruktur überdenken!
Ist es wirklich sinnvoll ALLES in eine einzige Tabelle zu schreiben, was passiert zum Beispiel, wenn der Patient mehr Medikamente benötigt als Felder vorgesehen sind?
Nun zur Lösung:
Alles auf Anfang und wir nehmen Stift und Papier zur Hand.
1. Welche Daten müssen in die Datenbank?
2. Wie sollte die optimale Datenbankstruktur aussehen.
3. Welche Eingabe- und/oder Ausgabefenster sind notwendig.
4. Wie sollen die einzelen Daten dargestellt werden, also mit welchen Komponenten.
und und und...
.
Re: MySQL Datensätze einlesen [HILFE]
uufffff....
Ich habe gehofft es ist nicht ganz so schlimm...
also 1. In die Datenbank wäre noch eine weitere Tabelle gekommen weil das schwierigste wäre zum Schluss gekommen. Es kommen ja noch eingescannte Arztbriefe rein und die können unendlich viele sein. Sonst Medikamente reichen 5. weil die Patienten die mehr als 5 brauchen werden nicht bei uns bleiben in der Unterkunft. Deswegen hatte ich es mit in die Tabelle genommen.
Mit rein müssen: Nummer, ZAB-Nummer, Name, Vorname, Geb.-Datum, Sprache, Geschlecht, Befundung(Muss viel Text beinhalten), Cave(Muss einzelne Wörter enthalten), Diagnose(auch einzelne Wörter), Medikamentenplan eine Tabelle mit Medi-Name, Früh, Mittag, Abend, Nacht, Dauer, Wer es verordnet hat, wie lange, Bemerkungen
Und ein Feld wo Dateien eingelesen und angezeigt werden können. Ach genau und Wiedervorstellung, Zahnarzt und Facharzt muss noch mit rein. Weil es später in eine andere Liste geladen werden sollte wo man alle Termine im Überblick hat.
2. Wie besprochen... hatte auch Überlegt Medikamente aus zu Lagern. Aber da es eh nie mehr werden hatte ich jede Spalte mit rein genommen. Sonst halt für jedes Feld eine Spalte halt.
3. Naja eigentlich alles was du siehst
4. Darstellung... also die ersten Angaben jeweils im EditFeld... sonst über den Rest kann man sich bestimmt streiten. Manches hätten auch Listboxen sein können

Ich habe gehofft es ist nicht ganz so schlimm...
also 1. In die Datenbank wäre noch eine weitere Tabelle gekommen weil das schwierigste wäre zum Schluss gekommen. Es kommen ja noch eingescannte Arztbriefe rein und die können unendlich viele sein. Sonst Medikamente reichen 5. weil die Patienten die mehr als 5 brauchen werden nicht bei uns bleiben in der Unterkunft. Deswegen hatte ich es mit in die Tabelle genommen.
Mit rein müssen: Nummer, ZAB-Nummer, Name, Vorname, Geb.-Datum, Sprache, Geschlecht, Befundung(Muss viel Text beinhalten), Cave(Muss einzelne Wörter enthalten), Diagnose(auch einzelne Wörter), Medikamentenplan eine Tabelle mit Medi-Name, Früh, Mittag, Abend, Nacht, Dauer, Wer es verordnet hat, wie lange, Bemerkungen
Und ein Feld wo Dateien eingelesen und angezeigt werden können. Ach genau und Wiedervorstellung, Zahnarzt und Facharzt muss noch mit rein. Weil es später in eine andere Liste geladen werden sollte wo man alle Termine im Überblick hat.
2. Wie besprochen... hatte auch Überlegt Medikamente aus zu Lagern. Aber da es eh nie mehr werden hatte ich jede Spalte mit rein genommen. Sonst halt für jedes Feld eine Spalte halt.
3. Naja eigentlich alles was du siehst

4. Darstellung... also die ersten Angaben jeweils im EditFeld... sonst über den Rest kann man sich bestimmt streiten. Manches hätten auch Listboxen sein können
Re: MySQL Datensätze einlesen [HILFE]
Deinen Fragen in den verschiedenen Threads konnte man schon entnehmen, dass du nicht den geringsten Schimmer hast von dem was du tust bzw. zu tun wäre. Google mal, ich denke es gibt OpenSource die das kann was du zusammenbasteln willst .. und die funktioniert !Aphadias hat geschrieben:Ich habe gehofft es ist nicht ganz so schlimm...
Re: MySQL Datensätze einlesen [HILFE]
Danke wie ihr mut macht. Ich habe halt 5 Jahre nicht mehr programmiert...
Und es wird nicht irgend ein OpenSource-Programm. Weil die sind zu professionell und meins soll ganz stumpf bleiben damit auch Leute ohne medizinischer Ausbildung es bedienen können.
Ich habe es jetzt angefangen und werde es auch durchziehen....
ich will das es erst mal nur funktioniert... danach verbessere ich es...
bleiben wir bitte jetzt beim thema? ich wäre euch sehr dankbar
Und es wird nicht irgend ein OpenSource-Programm. Weil die sind zu professionell und meins soll ganz stumpf bleiben damit auch Leute ohne medizinischer Ausbildung es bedienen können.
Ich habe es jetzt angefangen und werde es auch durchziehen....
ich will das es erst mal nur funktioniert... danach verbessere ich es...
bleiben wir bitte jetzt beim thema? ich wäre euch sehr dankbar

Re: MySQL Datensätze einlesen [HILFE]
Hallo,
ich kenne die Probleme sehr sehr gut, wenn man sich in diese Materie einarbeiten muss.
Aber vielleicht solltest Du wirklich mit kleineren Datenbank-Projekten anfangen. Bei dem, was du vor hast, brauchst du mehrere verschiedene Tabellen, die du dann geschickt (und das ist wirklich schwierig!) miteinander verbinden must (Relationen!)
Bitte nicht böse sein: Aber wenn du bereits beim Update eines Datensatz mit dem Problem kämpfst, dass ein neuer Datenstz angelegt wird statt nur ein bereits vorhandener Datensatz geändert wird, dann solltest du wirklich erst mal kleinere (Test-)Projekte programmieren.
Berufsbedingt kenne ich das Arztprogramm "TurboMed". Da gibt es eine Demo-Version, die - soweit ich weiß - nur darin beschränkt ist, dass man keine Abrechnung mit den Krankenkassen machen kann. Dieses Demo-Programm kann alles, was du gerne haben möchtest: http://www.turbomed.de/
Viele Grüße
Aliobaba
ich kenne die Probleme sehr sehr gut, wenn man sich in diese Materie einarbeiten muss.


Aber vielleicht solltest Du wirklich mit kleineren Datenbank-Projekten anfangen. Bei dem, was du vor hast, brauchst du mehrere verschiedene Tabellen, die du dann geschickt (und das ist wirklich schwierig!) miteinander verbinden must (Relationen!)
Bitte nicht böse sein: Aber wenn du bereits beim Update eines Datensatz mit dem Problem kämpfst, dass ein neuer Datenstz angelegt wird statt nur ein bereits vorhandener Datensatz geändert wird, dann solltest du wirklich erst mal kleinere (Test-)Projekte programmieren.
Berufsbedingt kenne ich das Arztprogramm "TurboMed". Da gibt es eine Demo-Version, die - soweit ich weiß - nur darin beschränkt ist, dass man keine Abrechnung mit den Krankenkassen machen kann. Dieses Demo-Programm kann alles, was du gerne haben möchtest: http://www.turbomed.de/
Viele Grüße
Aliobaba
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )