MySQL und die Components
-
- Lazarusforum e. V.
- Beiträge: 999
- Registriert: Do 17. Apr 2008, 01:59
- OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
- CPU-Target: Intel i7-10750 64Bit
- Wohnort: Freiburg
MySQL und die Components
Guten Morgen,
als Umsteiger von VB verstehe ich die Zusammenhänge zwischen den einzelnen DB-Komponenten nicht ganz, d.h. irgendwo habe ich etwas in meinem Programm vergessen:
was ich habe:
- eine MySQL-Datenbank
- ein Formular mit DBGrid und DBNavigator
- ein Datenmodul mit MySQLConnection, SQLTransaction, SQLQuery und Datasource
Die Navigation und Anzeige der Daten funktioniert im Prinzip. Wenn ich einen neuen Datensatz einfüge, wird er auch im Grid dargestellt, ebenso wenn ich einen Datensatz editiere.
Beende ich nun die Anwendung und starte diese neu, sind alle Änderungen wieder weg.
Bin ich von VB zu verwöhnt und erwarte zu viel vom DBNavigator?
Irgend etwas scheine ich zu übersehen ...
Problem 2 sind deutsche Umlaute, welche in der DB drin stehen, aber nicht gezeigt werden (UTF-8 general-ci) - beim Editieren kann ich Umlaute aber eingeben und sehe diese auch.
Ich freue mich, wenn mir jemand hier auf die Sprünge helfen kann.
Gruß Klaus
als Umsteiger von VB verstehe ich die Zusammenhänge zwischen den einzelnen DB-Komponenten nicht ganz, d.h. irgendwo habe ich etwas in meinem Programm vergessen:
was ich habe:
- eine MySQL-Datenbank
- ein Formular mit DBGrid und DBNavigator
- ein Datenmodul mit MySQLConnection, SQLTransaction, SQLQuery und Datasource
Die Navigation und Anzeige der Daten funktioniert im Prinzip. Wenn ich einen neuen Datensatz einfüge, wird er auch im Grid dargestellt, ebenso wenn ich einen Datensatz editiere.
Beende ich nun die Anwendung und starte diese neu, sind alle Änderungen wieder weg.
Bin ich von VB zu verwöhnt und erwarte zu viel vom DBNavigator?
Irgend etwas scheine ich zu übersehen ...
Problem 2 sind deutsche Umlaute, welche in der DB drin stehen, aber nicht gezeigt werden (UTF-8 general-ci) - beim Editieren kann ich Umlaute aber eingeben und sehe diese auch.
Ich freue mich, wenn mir jemand hier auf die Sprünge helfen kann.
Gruß Klaus
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
-
- Beiträge: 1102
- Registriert: Di 5. Aug 2008, 09:37
- OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
- CPU-Target: 32/64,PPC(+64), ARM
- Wohnort: Eindhoven (Niederlande)
Re: MySQL und die Components
Hört sich an als ein typischer Anfängerfehler: Ich denke den Transaktion wirt nie geschlossen. Sehe mal ob du "commit" anrufen kannst auf den Transaktion on-exit. (formclose oder so etwas)
-
- Beiträge: 101
- Registriert: Do 22. Nov 2007, 20:06
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: München
Re: MySQL und die Components
Hallo Klaus,
Du hast in der Tabelle einen Primarykey?
Gruß
Alfred
Du hast in der Tabelle einen Primarykey?
Gruß
Alfred
-
- Lazarusforum e. V.
- Beiträge: 999
- Registriert: Do 17. Apr 2008, 01:59
- OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
- CPU-Target: Intel i7-10750 64Bit
- Wohnort: Freiburg
Re: MySQL und die Components
Wie bereits erwähnt denke ich aauch, dass es ein dummer Anfängerfehler ist. Es ist nur ein kleines Testprogramm, mit welchem ich experimentiere.
Ich habe bereits einiges versucht, komme aber nicht weiter.
Muss ich die Transaktion per Code starten und beenden oder ist dies Aufgabe des DBNNavigators?
Hier mal die Daten:
Ich habe bereits einiges versucht, komme aber nicht weiter.
Muss ich die Transaktion per Code starten und beenden oder ist dies Aufgabe des DBNNavigators?
Hier mal die Daten:
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
DbCtrls, db, mysql50conn, sqldb, DBGrids;
type
{ TForm1 }
TForm1 = class(TForm)
DBEdit1: TDBEdit;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure FormShow(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
uses unit2;
{ TForm1 }
procedure TForm1.FormShow(Sender: TObject);
begin
DataModule1.MySQL50Connection1.Connected:=true;
DataModule1.SQLQuery1.Active:=true;
end;
procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
DataModule1.SQLTransaction1.Commit;
end;
initialization
{$I unit1.lrs}
end.
Code: Alles auswählen
unit Unit2;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Dialogs,
mysql50conn, db, sqldb;
type
{ TDataModule1 }
TDataModule1 = class(TDataModule)
Datasource1: TDatasource;
MySQL50Connection1: TMySQL50Connection;
SQLQuery1: TSQLQuery;
SQLTransaction1: TSQLTransaction;
private
{ private declarations }
public
{ public declarations }
end;
var
DataModule1: TDataModule1;
implementation
initialization
{$I unit2.lrs}
end.
Code: Alles auswählen
object DataModule1: TDataModule1
Height = 300
HorizontalOffset = 2706
VerticalOffset = 679
Width = 400
object MySQL50Connection1: TMySQL50Connection
Connected = True
DatabaseName = 'trale'
Params.Strings = (
''
)
Password = '***'
Transaction = SQLTransaction1
UserName = 'irgendwer'
HostName = 'localhost'
left = 36
top = 36
end
object SQLTransaction1: TSQLTransaction
Database = MySQL50Connection1
left = 76
top = 76
end
object SQLQuery1: TSQLQuery
IndexName = 'DEFAULT_ORDER'
Database = MySQL50Connection1
Transaction = SQLTransaction1
SQL.Strings = (
'select name,strasse,hausnr,plz,ort from adressbasis'
)
Params = <>
UpdateMode = upWhereChanged
left = 36
top = 76
end
object Datasource1: TDatasource
DataSet = SQLQuery1
left = 128
top = 76
end
end
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
-
- Lazarusforum e. V.
- Beiträge: 999
- Registriert: Do 17. Apr 2008, 01:59
- OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
- CPU-Target: Intel i7-10750 64Bit
- Wohnort: Freiburg
Re: MySQL und die Components
Nachtrag: Ich habe einen Primärschlüssel auf einem Feld lfdnr, welches aber in der Abfrage nicht verwendet wird.
Gruß Klaus
Gruß Klaus
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
-
- Beiträge: 101
- Registriert: Do 22. Nov 2007, 20:06
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: München
Re: MySQL und die Components
Hallo Klaus,
vor commit steht bei mir
SQLQuery1.UpdateMode := upWhereChanged;
SQLQuery1.ApplyUpdates;
Gruß
Alfred
vor commit steht bei mir
SQLQuery1.UpdateMode := upWhereChanged;
SQLQuery1.ApplyUpdates;
Gruß
Alfred
-
- Lazarusforum e. V.
- Beiträge: 999
- Registriert: Do 17. Apr 2008, 01:59
- OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
- CPU-Target: Intel i7-10750 64Bit
- Wohnort: Freiburg
Re: MySQL und die Components
Hallo Alfred!
Das ApplyUpdates muss es sein, jedenfalls funktioniert es nun.
Jetzt muss ich mich nur noch den deutschen Umlauten widmen, was nicht so einfach sein wird
(Ich habe ca. 250 000 Datensätze in der Datenbank, die nur in Lazarus nicht richtig angezeigt werden)
Vielen Dank
Klaus
Das ApplyUpdates muss es sein, jedenfalls funktioniert es nun.
Jetzt muss ich mich nur noch den deutschen Umlauten widmen, was nicht so einfach sein wird

(Ich habe ca. 250 000 Datensätze in der Datenbank, die nur in Lazarus nicht richtig angezeigt werden)
Vielen Dank
Klaus
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
-
- Lazarusforum e. V.
- Beiträge: 999
- Registriert: Do 17. Apr 2008, 01:59
- OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
- CPU-Target: Intel i7-10750 64Bit
- Wohnort: Freiburg
Re: MySQL und die Components
Wenn ich in der Lazarus-Anwendung München eingebe, habe ich in der Datenbank München stehen.
In Lazarus wird es aber richtig angezeigt.
Die Datenbank selbst sollte nach Möglichkeit nicht geändert werden müssen!
Wo muss in Lazarus der Zeichensatz eingestellt werden, damit das richtig funktioniert (MySQL ist UTF-8_general-ci)
Gruß
Klaus
In Lazarus wird es aber richtig angezeigt.
Die Datenbank selbst sollte nach Möglichkeit nicht geändert werden müssen!
Wo muss in Lazarus der Zeichensatz eingestellt werden, damit das richtig funktioniert (MySQL ist UTF-8_general-ci)
Gruß
Klaus
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
-
- Beiträge: 101
- Registriert: Do 22. Nov 2007, 20:06
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: München
Re: MySQL und die Components
Hallo Klaus,
Lazarus arbeitet nur mit UTF8. Ich setzt deshalb Lazarus bei mir nicht produktiv ein.
Wenn nur Lazarus zugreift, kommt man mit
Charset: cp 1252 West European
und
collation latin1_german2_ci
klar.
Gruß
Alfred
Lazarus arbeitet nur mit UTF8. Ich setzt deshalb Lazarus bei mir nicht produktiv ein.
Wenn nur Lazarus zugreift, kommt man mit
Charset: cp 1252 West European
und
collation latin1_german2_ci
klar.
Gruß
Alfred
-
- Beiträge: 131
- Registriert: Sa 5. Apr 2008, 17:57
- OS, Lazarus, FPC: Linux (Debian, Xubuntu), MacOS X, MS Win, Android, Web
- CPU-Target: 32Bit/64Bit
- Wohnort: Ulm
Re: MySQL und die Components
Das stimmt so nicht. Datenbankanwendungen die mit Lazarus erstellt werden können sehr wohl mit anderen Codepages zurechtkommen.
Das kann also kein Grund sein Lazarus nicht produktiv anzuwenden.
Im Zusammenhang mit dem Codepage Problem gab es im Forum schon mehrere Beiträge.
Ev. mal hier reinschauen:
http://www.lazarusforum.de/viewtopic.ph ... 77&start=0" onclick="window.open(this.href);return false;
Sonst kann ich empfehlen, gerade für den produktiven Einsatz, die Zeos-Komponenten zu benutzen.
Wir machen sehr viel damit -auch produktiven Betrieb im größeren Maßstab im Klinikumfeld- und sind äußerst zufrieden.
Gruss
Das kann also kein Grund sein Lazarus nicht produktiv anzuwenden.
Im Zusammenhang mit dem Codepage Problem gab es im Forum schon mehrere Beiträge.
Ev. mal hier reinschauen:
http://www.lazarusforum.de/viewtopic.ph ... 77&start=0" onclick="window.open(this.href);return false;
Sonst kann ich empfehlen, gerade für den produktiven Einsatz, die Zeos-Komponenten zu benutzen.
Wir machen sehr viel damit -auch produktiven Betrieb im größeren Maßstab im Klinikumfeld- und sind äußerst zufrieden.
Gruss
-
- Lazarusforum e. V.
- Beiträge: 999
- Registriert: Do 17. Apr 2008, 01:59
- OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
- CPU-Target: Intel i7-10750 64Bit
- Wohnort: Freiburg
Re: MySQL und die Components
Was heißt, Lazarus arbeitet nur mit UTF8?
Ich habe in der Datenbank doch auch UTF8 eingestellt - (schon wieder so eine unbedarfte Frage eines Umsteigers
)
An ZEOS habe ich auch schon gedacht, bekomme aber leider beim installieren die Meldung:
Das Package "zplain 7.0" konnte nicht kompiliert werden
Ich habe ZEOS gestern herunter geladen und FPC/Lazarus mit dem Skript getlazarus installiert (Ubuntu Intrepid Ibex)
Etwas Hintergrund zu mir:
Ich habe seit Jahren Software unter Windows entwickelt und dabei das MS-Paket verwendet. Hauptsächlich VisualBasic, da C zu Dokumentationsintensiv ist.
Des weiteren habe ich einig Programme im 3D-Bereich (Grafikeditoren etc) mit Delphi geschrieben.
Ich bin also nicht ganz unbedarft, was die Programmierung angeht, jedoch tue ich mich nun etwas schwer, mit Lazarus/FPC zurecht zu kommen.
Ich möchte dieses Gespann jedoch verwenden, da ich mich von Windows weitestgehend getrennt habe und nach über 14-monatigem Kennenlernen von Linux
sicher nicht wieder zu Windows zurück möchte.
Gruß Klaus
Ich habe in der Datenbank doch auch UTF8 eingestellt - (schon wieder so eine unbedarfte Frage eines Umsteigers

An ZEOS habe ich auch schon gedacht, bekomme aber leider beim installieren die Meldung:
Das Package "zplain 7.0" konnte nicht kompiliert werden
Ich habe ZEOS gestern herunter geladen und FPC/Lazarus mit dem Skript getlazarus installiert (Ubuntu Intrepid Ibex)
Etwas Hintergrund zu mir:
Ich habe seit Jahren Software unter Windows entwickelt und dabei das MS-Paket verwendet. Hauptsächlich VisualBasic, da C zu Dokumentationsintensiv ist.
Des weiteren habe ich einig Programme im 3D-Bereich (Grafikeditoren etc) mit Delphi geschrieben.
Ich bin also nicht ganz unbedarft, was die Programmierung angeht, jedoch tue ich mich nun etwas schwer, mit Lazarus/FPC zurecht zu kommen.
Ich möchte dieses Gespann jedoch verwenden, da ich mich von Windows weitestgehend getrennt habe und nach über 14-monatigem Kennenlernen von Linux
sicher nicht wieder zu Windows zurück möchte.
Gruß Klaus
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
-
- Beiträge: 101
- Registriert: Do 22. Nov 2007, 20:06
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: München
Re: MySQL und die Components
Hallo Klaus,
meine Erfahrungen beruhen auf Client Windows XP Pro, Samba-Server Linux(FC8).
Bei Client Linux bin ich abgestürzt und habe es nicht weiter verfolgt, da meine beruflichen Programme
alle nur in der Windowswelt funktionieren.
Dein Problem könnte aus dem Bereich des von der Linuxdistribution verwendeten Zeichensatzes stammen.
Gruß
Alfred
meine Erfahrungen beruhen auf Client Windows XP Pro, Samba-Server Linux(FC8).
Egal was ich an der Datenbank eingestellt hatte, Lazarus hatte mir UTF8 in die Datenbank gestellt.Was heißt, Lazarus arbeitet nur mit UTF8?
Bei Client Linux bin ich abgestürzt und habe es nicht weiter verfolgt, da meine beruflichen Programme
alle nur in der Windowswelt funktionieren.
Dein Problem könnte aus dem Bereich des von der Linuxdistribution verwendeten Zeichensatzes stammen.
Gruß
Alfred
-
- Beiträge: 131
- Registriert: Sa 5. Apr 2008, 17:57
- OS, Lazarus, FPC: Linux (Debian, Xubuntu), MacOS X, MS Win, Android, Web
- CPU-Target: 32Bit/64Bit
- Wohnort: Ulm
Re: MySQL und die Components
Die Lazarusumgebung hat zwar als primäre Kodierung UTF8, was ja im Grund auch der einzig sinnvolle Weg ist.
Im Übrigen wechselt ja sogar die MS-Win Welt in diese Richtung...
Die DB-Verbindung hat damit aber nicht zwangsläufig etwas zu tun, hier kommt es einmal auf die Einstellungen in der DB an. Also was dort für die Tabellen oder zum Teil bei manchen DBs auch für einzelne Felder als Kodierung vorgegeben ist.
Die andere Seite ist die des Clients und somit des Anwendungsprogrammes und hier ist die Konfiguration des Clients wichtig.
NUR wenn beide Seiten die gleiche Kodierung benutzen kann es ohne Darstellungsprobleme funktionieren.
Für die Client-Konfiguration kann man bei Nutzung der Zeos Komponenten dann bei der ZConnection in den Properties dann wie in dem Beispiel im Thread (s.o.) das Codepage Setting beeinflussen.
Zur Installation/Nutzung der Zeos Komponenten: Nimm' die aktuelle Stable Release. Das ist die 6.6.4 ! Grundsätzlich empfehle ich bei Nutzung auch für kommerzielle Projekte eher konservativ mit den Versionen zu sein.
Neue Versionen testen wir mit unserem Team immer erst ausgiebig bevor wir sie in die produktive Entwicklungsumgebung übernehmen.
Derzeit arbeiten wir mit FPC 2.2.2 und Lazarus 0.9.26.1 allerdings haben wir die Entwicklungsumgebung unter MS-Win, Linux und Mac-OS verfügbar.
Das geht in dieser Güte nur mit sehr wenigen Systemen!
Wir können unseren Kunden somit Systeme unter diesen drei Betriebssystemen zur Verfügung stellen.
Wobei die Meisten sich inzwischen für ein Linux-System entscheiden.
Die Installation von Zeos sollte dann direkt unter dem Package Management von Lazarus erfolgen, dazu gibt es aber genügend Dokumentation.
Falls weitere Fragen sein sollten, einfach schreiben.
Gruss,
Piper
Im Übrigen wechselt ja sogar die MS-Win Welt in diese Richtung...
Die DB-Verbindung hat damit aber nicht zwangsläufig etwas zu tun, hier kommt es einmal auf die Einstellungen in der DB an. Also was dort für die Tabellen oder zum Teil bei manchen DBs auch für einzelne Felder als Kodierung vorgegeben ist.
Die andere Seite ist die des Clients und somit des Anwendungsprogrammes und hier ist die Konfiguration des Clients wichtig.
NUR wenn beide Seiten die gleiche Kodierung benutzen kann es ohne Darstellungsprobleme funktionieren.
Für die Client-Konfiguration kann man bei Nutzung der Zeos Komponenten dann bei der ZConnection in den Properties dann wie in dem Beispiel im Thread (s.o.) das Codepage Setting beeinflussen.
Zur Installation/Nutzung der Zeos Komponenten: Nimm' die aktuelle Stable Release. Das ist die 6.6.4 ! Grundsätzlich empfehle ich bei Nutzung auch für kommerzielle Projekte eher konservativ mit den Versionen zu sein.
Neue Versionen testen wir mit unserem Team immer erst ausgiebig bevor wir sie in die produktive Entwicklungsumgebung übernehmen.
Derzeit arbeiten wir mit FPC 2.2.2 und Lazarus 0.9.26.1 allerdings haben wir die Entwicklungsumgebung unter MS-Win, Linux und Mac-OS verfügbar.
Das geht in dieser Güte nur mit sehr wenigen Systemen!
Wir können unseren Kunden somit Systeme unter diesen drei Betriebssystemen zur Verfügung stellen.
Wobei die Meisten sich inzwischen für ein Linux-System entscheiden.
Die Installation von Zeos sollte dann direkt unter dem Package Management von Lazarus erfolgen, dazu gibt es aber genügend Dokumentation.
Falls weitere Fragen sein sollten, einfach schreiben.
Gruss,
Piper
-
- Lazarusforum e. V.
- Beiträge: 999
- Registriert: Do 17. Apr 2008, 01:59
- OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
- CPU-Target: Intel i7-10750 64Bit
- Wohnort: Freiburg
Re: MySQL und die Components
Hallo Piper,
ich habe es nun mit de 6.6.4 versucht, mit dem selben Resultat:
Das Package "zplain 6.6.3" konnte nicht kompiliert werden.
Aus der Installationsliste nehmen?
Ich habe die selben Versionsnummern bei Lazarus und FPC wie von dir genannt.
Irgend eine Idee?
Was mich verwirrt: Es wird die Version 6.6.3 angezeigt, obwohl ich eben das Paket 6.6.4 heruntergeladen und entpackt habe.
Gruß Klaus
ich habe es nun mit de 6.6.4 versucht, mit dem selben Resultat:
Das Package "zplain 6.6.3" konnte nicht kompiliert werden.
Aus der Installationsliste nehmen?
Ich habe die selben Versionsnummern bei Lazarus und FPC wie von dir genannt.
Irgend eine Idee?
Was mich verwirrt: Es wird die Version 6.6.3 angezeigt, obwohl ich eben das Paket 6.6.4 heruntergeladen und entpackt habe.
Gruß Klaus
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
Re: MySQL und die Components
Wie hast du denn versucht, Zeos zu installieren? Bei Zeos sind 5 .lpk Dateien vorhanden, von denen nur eine (zcomponent) installiert werden sollte. Die anderen folgen als Abhängigkeiten automatisch mit.MacWomble hat geschrieben:Hallo Piper,
ich habe es nun mit de 6.6.4 versucht, mit dem selben Resultat:
Das Package "zplain 6.6.3" konnte nicht kompiliert werden.
Aus der Installationsliste nehmen?
Gruß Klaus
knight