AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Speicherung in MySql
Thema durchsuchen
Ansicht
Themen-Optionen

Speicherung in MySql

Ein Thema von Bernhard Nienhaus · begonnen am 28. Sep 2015 · letzter Beitrag vom 30. Sep 2015
Antwort Antwort
Bernhard Nienhaus

Registriert seit: 28. Sep 2015
Ort: 48691 Vreden (NRW)
2 Beiträge
 
Delphi XE7 Professional
 
#1

Speicherung in MySql

  Alt 28. Sep 2015, 15:49
Datenbank: MySql • Version: 5.5 • Zugriff über: Delphi XE 7
Ich komme und komme nicht weiter. Muss aber auch sagen das ich noch nicht so lange in Delphi programmiere. Habe bisher dBase verwendet.
Dort auch schon ein grösseres Projekt programmiert. Von Beruf bin ich Feuerwehrmann und habe dort für einige Feuerwehren die komplette Personalverwaltung programmiert. Aber da nun viele von DOS Programmen abrücken, wollte ich das Programm in Delphi jetzt programmieren. Da ich noch nicht lange in Delphi programmiere ist es sehr mühsam, aber die Beispiele die Sie in Ihren Tutorials bringen, sind klasse, die bringen mich sehr weit nach Vorn.
Aber nun habe ich ein Problem wo ich nicht so recht weiter komme.
Erst mal mit welchen Geräten bzw. Programmen ich arbeite:


Computer : Rechner mit I5 Proz
System : Win7 prof
Delphi : XE 7 prof.
Datenbanksytsem : MySQL
Datenbank : Feuerwehr (MySQL)
Tabelle : Leh (MySQL


Zum Problem:
Ich muss ja neue Daten eingeben und abspeichern, sowie will ich aus einem DBgrid Daten übernehmen um sie dann abzuspeichern. Also einmal neue Daten einfügen , zum weiteren dann Daten ersetzen.
Das Anstossen der Möglichkeiten geschieht über verschiedene Button.



procedure TPer_form.LEH_spei_bitbtnClick(Sender: TObject);
begin
leh_tabl.insert ;
leh_tabl['lg_dat'] := LG_dat_aen_picker.Date;
LEH_tabl['LG_pnr'] := per_table['PE_nr'];
LEH_tabl['LG_kurz'] := LG_kurz_edit.Text;
LEH_tabl['LG_lang'] := LG_lang_edit.Text;
LEH_tabl['LG_ort'] := LG_ort_edit.Text;
LEH_tabl['LG_inst'] := LG_inst_combo.Text;
LEH_tabl['LG_std'] := LG_std_edit.Text;
LEH_tabl['LG_Leit'] := LG_leiter_edit.Text;
LEH_tabl['LG_note'] := LG_note_combox.Text;
LEH_tabl['LG_wert'] := MLG_wert;
leh_tabl['LG_usda'] := now ;
LEH_tabl['LG_user'] := an_table1['US_name'];
leh_tabl.Post ;
MessageDlg('Die Daten wurden gespeichert.....', mtInformation, [mbOK], 0);
end;


Dies funktioniert auch, so wie gewünscht. Könnte mir aber vorstellen das es in SQL sauberer wäre. Vielleicht können sie mir diese Procedur zu kommen lassen.
Das eigentliche Problem habe ich aber damit das im Änderungsmodus immer der erste Datensatz geändert wird. Auch hier nachfolgend die Procedur.

procedure TPer_form.LEH_aen_speich_bitbtnClick(Sender: TObject);
begin
leh_tabl.edit ;
LEH_tabl['Lg_dat'] := LG_dat_aen_picker.Date;
LEH_tabl['LG_pnr'] := per_table['PE_nr'];
LEH_tabl['LG_kurz'] := LG_kurz_edit_a.Text;
LEH_tabl['LG_lang'] := LG_lang_edit_a.Text;
LEH_tabl['LG_ort'] := LG_ort_edit_a.Text;
LEH_tabl['LG_inst'] := LG_inst_edit_a.Text;
LEH_tabl['LG_std'] := LG_std_edit_a.Text;
LEH_tabl['LG_Leit'] := LG_leiter_edit_a.Text;
LEH_tabl['LG_note'] := LG_note_edit_a.Text;
leh_tabl['LG_usda'] := now ;
LEH_tabl['LG_user'] := an_table1['US_name'];
leh_tabl.Post ;
end;

Das ist die zweite Procedur, die immer den ersten Datensatz ändert.
Auch hier würde ich gerne eine SQL Speicherung vorziehen mit Update

Nur wie ?????

Im Vorraus meinen herzlichen Dank
Bernhard
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#2

AW: Speicherung in MySql

  Alt 28. Sep 2015, 19:37
Also um mal den Anfang zu machen, Du entwickelst ja offenbar die Anwendung von Grund auf neu:
- Gibt es ein Grund, dass Du mySQL nimmst? Vorschlag: PostgreSQL oder Firebird (Bei PostgreSQL weiß ich allerdings nicht, welche Treiber da verfügbar sind.
- Hast Du die Tabellen 1:1 übernommen? Ich würde mir den "Luxus " gönnen und wengstens die Feldnamen und die Tabellennamen so benennen, dass es vielleicht auch mal jemand anders lesen und verstehen kann. (Jetzt wäre auch der Zeitpunkt, das Datenmodel anzupassen, falls notwendig)
- TTable usw. : Auch hier empfehle ich sprechende Namen. Zu dem konkreten Problem: Dir ist vielleicht nicht klar, wie Du in einem Dataset navigierst und wie man datensensitive Komponenten nutzt. Hier gibt es mindestens einige Tutorials zu dem Thema (s.u.). Ein Datenbank Einsteiger Tutorial bringt Dich sicher einen großen Schritt weiter (egal ob mySQL oder was anderes).
- Zu Queries: Du musst nicht zwingend SQL schreiben, da gibt es unterschiedliche Konzepte. Du kannst aber so arbeiten, dass Du im Zweifel (Spezialfälle) mit expliziten Insert, Update, Delete Statements arbeiten kannst. (s.u.)


http://www.delphipraxis.net/dp_searc...rums_string=36
Gruß, Jo
  Mit Zitat antworten Zitat
Pfaffe

Registriert seit: 29. Jan 2009
294 Beiträge
 
Delphi 12 Athens
 
#3

AW: Speicherung in MySql

  Alt 28. Sep 2015, 20:29
http://www.sql-und-xml.de/sql-tutori...er-zeilen.html

Alternative:
http://www.feuerwehrsoftware.biz/
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#4

AW: Speicherung in MySql

  Alt 29. Sep 2015, 06:32
Bit kei abk neh. Das kan man doc kau les.

Delphi-Quellcode:
procedure TPersonenForm.LEH_Speichern_Btn_Click(Sender: TObject);
begin
 leh.insert;
 ...
 leh_tabl.Post ;
 MessageDlg('Die Daten wurden gespeichert.....', mtInformation, [mbOK], 0);
end;
Verwende doch aussagekräftige Bezeichner. Abkürzung sind weder professionell, noch machen sie das Programm schneller. Sie sind einfach nur unleserlich.

Wie schon ausgeführt: Gleich richtige Namen für Tabellen und Felder nehmen.
Dann würde ich das ganze Tabellenzeugs in ein Datenmodul packen. Das hat in einem Formular nichts zu suchen.
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#5

AW: Speicherung in MySql

  Alt 29. Sep 2015, 14:26
Das eigentliche Problem habe ich aber damit das im Änderungsmodus immer der erste Datensatz geändert wird.
Zu der konkreten Frage. Man muss zuerst einmal zu dem Datensatz navigieren, den man ändern will, sonst öffnet man mit leh_tabl.edit immer nur den gerade aktiven (ersten) Datensatz.

Und weil's noch keiner gesagt hat: Quellcode-Abschnitte am besten in die Delphi-Tags (Der Helm-Button im Editor) packen, damit sie schön formatiert und lesbar sind.
Ralph
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#6

AW: Speicherung in MySql

  Alt 29. Sep 2015, 17:48
Fehlposting

Geändert von Perlsau (29. Sep 2015 um 20:17 Uhr) Grund: Inhalt wegen Fehlposting gelöscht.
  Mit Zitat antworten Zitat
Bernhard Nienhaus

Registriert seit: 28. Sep 2015
Ort: 48691 Vreden (NRW)
2 Beiträge
 
Delphi XE7 Professional
 
#7

AW: Speicherung in MySql

  Alt 30. Sep 2015, 13:14
Recht herzlichen Dank für die Hinweise. Mit den Variablen Abkürzungen, ja das kommt noch aus der dBase Programmierung, da man dort ja keine langen Variablen Namen verwenden konnte. Die werde ich auch in dem Projekt dann entsprechend ändern in "Sprechende Variablen".
Zu dem Änderungsmodus habe ich vor dem leh_tabl.edit dann die LehrangsIDnr gesucht, sodass der ausgesuchte Datensatz dann verwendet wird.

procedure TPer_form.Lehrgang_aendern_bitbtnClick(Sender: TObject);
begin
..Lehrgang_TFDtabel.Locate('Lehrgang_idnr',Lehrgan g_idnr,[loCaseInsensitive]);
..Lehrgang_TFDTabel.edit ;
..Lehrgang_TFDTabel['Lehrgang_datum'] := Lehrgang_Datum_DateTimePicker.Date ;
.....
.....
Lehrgang_TFDTable.post
end;


Mit dieser Ausführung klappt alles so wie gewünscht.

Vielen herzlichen Dank für eure Hinweise und Tip.s

mfg Bernhard

PS Die b eiden Punkte stehen für Leerzeichen, damit zwischen Begin und End ein Abschnitt ist bzw. eine Einrückung hier.
Bernhard

Geändert von Bernhard Nienhaus (30. Sep 2015 um 13:18 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: Speicherung in MySql

  Alt 30. Sep 2015, 13:46
PS Die b eiden Punkte stehen für Leerzeichen, damit zwischen Begin und End ein Abschnitt ist bzw. eine Einrückung hier.
Ja, das ist ja schön ... aber ...
Und weil's noch keiner gesagt hat: Quellcode-Abschnitte am besten in die Delphi-Tags (Der Helm-Button im Editor) packen, damit sie schön formatiert und lesbar sind.
... denn dann kannst du dir diese Punkte sparen ...
Delphi-Quellcode:
procedure TPer_form.Lehrgang_aendern_bitbtnClick(Sender: TObject);
begin
  Lehrgang_TFDtabel.Locate('Lehrgang_idnr',Lehrgan g_idnr,[loCaseInsensitive]);
  Lehrgang_TFDTabel.edit ;
  Lehrgang_TFDTabel['Lehrgang_datum'] := Lehrgang_Datum_DateTimePicker.Date ;
  ...
  Lehrgang_TFDTable.post
end;
Und so muss das im Beitrags-Editor aussehen:
Code:
[DELPHI]
procedure TPer_form.Lehrgang_aendern_bitbtnClick(Sender: TObject);
begin
  Lehrgang_TFDtabel.Locate('Lehrgang_idnr',Lehrgan g_idnr,[loCaseInsensitive]);
  Lehrgang_TFDTabel.edit ;
  Lehrgang_TFDTabel['Lehrgang_datum'] := Lehrgang_Datum_DateTimePicker.Date ;
  ...
  Lehrgang_TFDTable.post
end;
[/DELPHI]
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  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 16:42 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