Datenbanken mit MSEide+MSEgui
-
- Beiträge: 155
- Registriert: Mi 22. Aug 2007, 14:52
- OS, Lazarus, FPC: Mandriva Linux 2008 (L 0.9.28 FPC 2.2.4)
- CPU-Target: 32Bit
- Wohnort: 65719 Hofheim am Taunus
- Kontaktdaten:
Datenbanken mit MSEide+MSEgui
Lieber Martin,
gemäss Deinem Ratschlag fange ich hier jetzt ein neues Thema an: Datenbanken mit MSEide+MSEgui.
Ich bin ja noch ein Anfänger, obwohl ich früher in Delphi und jetzt auch schon in Lazarus einige Projekte gemacht habe.
Aber jetzt brauche ich in MSEide HILFE:
Ich habe es nicht geschafft, meine Datenbanken in einem TDBStringGrid zur Anzeige zu bringen.
Ich habe auf der Form: tmsemysql50connection, tmsesqltransaction, tmsesqlquery (mit `select * from testtabelle`, wohl die einfachste Abfrage), tmsedatasource und tdbstringgrid.
Ich kann im Programm auf die Felder zugreifen, auch im DBStringGrid navigieren, aber das DBStringGrid an sich bleibt leer, habe probiert, die Felder hinzuzufügen, wird auch alles akzeptiert ohne Fehler, aber das DBStringGrid bleibt leer.
Ich meine, ich habe alles so gemacht wie Du im Beitrag `Architektur MSEide+MSEgui` vom 1.11. geschrieben hast, aber anscheinend mach ich was grundsätzlich falsch.
¿Kannst Du/Könnt Ihr mir helfen?
gemäss Deinem Ratschlag fange ich hier jetzt ein neues Thema an: Datenbanken mit MSEide+MSEgui.
Ich bin ja noch ein Anfänger, obwohl ich früher in Delphi und jetzt auch schon in Lazarus einige Projekte gemacht habe.
Aber jetzt brauche ich in MSEide HILFE:
Ich habe es nicht geschafft, meine Datenbanken in einem TDBStringGrid zur Anzeige zu bringen.
Ich habe auf der Form: tmsemysql50connection, tmsesqltransaction, tmsesqlquery (mit `select * from testtabelle`, wohl die einfachste Abfrage), tmsedatasource und tdbstringgrid.
Ich kann im Programm auf die Felder zugreifen, auch im DBStringGrid navigieren, aber das DBStringGrid an sich bleibt leer, habe probiert, die Felder hinzuzufügen, wird auch alles akzeptiert ohne Fehler, aber das DBStringGrid bleibt leer.
Ich meine, ich habe alles so gemacht wie Du im Beitrag `Architektur MSEide+MSEgui` vom 1.11. geschrieben hast, aber anscheinend mach ich was grundsätzlich falsch.
¿Kannst Du/Könnt Ihr mir helfen?
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: Datenbanken mit MSEide+MSEgui
Das einfachste um alle Felder im tdbstringrid anzuzeigen, ist tdbstringgrid.options dsgo_autofields zu aktivieren.
Um gezielt einzelne Spalten anzulegen setze dsgo_autofields auf false und benutze die tdbstringgrid.datacols Eigenschaft.
Beispiel, es sollen die Felder 'f1','f2,'f3' angezeigt werden:
- Im Object Inspector tdbstringgrid.datacols.count = 3.
- auf '+' bei datacols.count clicken.
- auf '+' bei item 0 clicken.
- 'f1' in datafield auswählen.
- auf '+' bei item 1 clicken.
- 'f2' in datafield auswählen.
- auf '+' bei item 2 clicken.
- 'f3' in datafield auswählen.
Für "ernsthafte" Arbeiten ist tdbwidgetgrid mit eingesetzten tdb*editwidget besser geeignet, da die Konfigurierungsmöglichkeiten viel grösser sind.
Falls du dich nicht um applyupdates und commit kümmern möchtest, aktiviere tmsesqlquery.controller.options dso_autoapply und dso_autocommitret (dies meint auto commit retaining).
Martin
Um gezielt einzelne Spalten anzulegen setze dsgo_autofields auf false und benutze die tdbstringgrid.datacols Eigenschaft.
Beispiel, es sollen die Felder 'f1','f2,'f3' angezeigt werden:
- Im Object Inspector tdbstringgrid.datacols.count = 3.
- auf '+' bei datacols.count clicken.
- auf '+' bei item 0 clicken.
- 'f1' in datafield auswählen.
- auf '+' bei item 1 clicken.
- 'f2' in datafield auswählen.
- auf '+' bei item 2 clicken.
- 'f3' in datafield auswählen.
Für "ernsthafte" Arbeiten ist tdbwidgetgrid mit eingesetzten tdb*editwidget besser geeignet, da die Konfigurierungsmöglichkeiten viel grösser sind.
Falls du dich nicht um applyupdates und commit kümmern möchtest, aktiviere tmsesqlquery.controller.options dso_autoapply und dso_autocommitret (dies meint auto commit retaining).
Martin
-
- Beiträge: 155
- Registriert: Mi 22. Aug 2007, 14:52
- OS, Lazarus, FPC: Mandriva Linux 2008 (L 0.9.28 FPC 2.2.4)
- CPU-Target: 32Bit
- Wohnort: 65719 Hofheim am Taunus
- Kontaktdaten:
Re: Datenbanken mit MSEide+MSEgui
¡Vielen Dank! (und wieder hat sich bewährt: Kaum macht man`s richtig, schon funktionierts)
Wenn ich mir`s leisten könnte, würde ich einen Kurs bei Dir buchen.
Ich werde noch zum MSEide-Fan...
ABER, um Dich nicht dauernd mit irgendwelchen Basics zu quälen: ¿Gibt's denn nirgendwo ein Tutorial, was ein bisschen über das Beginners-Tutorial herausgeht? (eine Schaltfläche mit einer Beschriftung zu versehen ist 100% Delphi/Lazarus kompatibel)
ABER, z.B. bin ich schon wieder an zwei Sachen gescheitert: Ein normales StringGrid (keine DB). Da gibt es keine Cells,
¿wie greife ich auf die Zellen zu?
Ein TMemoEdit: Da gibt es keine Lines, keine Strings, keine Items, keine Methode Add. ¿Wie füge ich da Einträge zu und lese diese wieder aus?
Danke für Deine Geduld
Wenn ich mir`s leisten könnte, würde ich einen Kurs bei Dir buchen.
Ich werde noch zum MSEide-Fan...
ABER, um Dich nicht dauernd mit irgendwelchen Basics zu quälen: ¿Gibt's denn nirgendwo ein Tutorial, was ein bisschen über das Beginners-Tutorial herausgeht? (eine Schaltfläche mit einer Beschriftung zu versehen ist 100% Delphi/Lazarus kompatibel)
ABER, z.B. bin ich schon wieder an zwei Sachen gescheitert: Ein normales StringGrid (keine DB). Da gibt es keine Cells,
¿wie greife ich auf die Zellen zu?
Ein TMemoEdit: Da gibt es keine Lines, keine Strings, keine Items, keine Methode Add. ¿Wie füge ich da Einträge zu und lese diese wieder aus?
Danke für Deine Geduld
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: Datenbanken mit MSEide+MSEgui
Es hat sich noch kein MSEgui Anwender dazu bequemt, die Dokumentation systematisch anzupacken und zu konzentrieren. Für die Dokumentation von MSEide+MSEgui existiert ein eigenes SourceForge Projekt:KOBOLD Messring GmbH hat geschrieben: ABER, um Dich nicht dauernd mit irgendwelchen Basics zu quälen: ¿Gibt's denn nirgendwo ein Tutorial, was ein bisschen über das Beginners-Tutorial herausgeht? (eine Schaltfläche mit einer Beschriftung zu versehen ist 100% Delphi/Lazarus kompatibel)
http://sourceforge.net/projects/msedocumenting/
Im dortigen SVN repository gibts Beispiele und etwas Dokumentation:
http://msedocumenting.svn.sourceforge.n ... mse/trunk/
Eine Fülle von Informationen gibts in der newsgroup (NNTP):
[url]news://news.grid-sky.com/public.mseide-msegui.talk[/url]
Nun müsste "jemand" dafür sorgen, dass die Beitrage von Google indexiert werden...
Und dann gibt es noch ein kleines veraltetes Wiki:
http://wiki.freepascal.org/MSEide_&_MSEgui
und weitere verstreute Informationen.
Auf die Spalten (Typ tstringdatacol) mit tstringgrid[spalte], auf die Zelltexte mit tstringgrid[spalte][zeile].ABER, z.B. bin ich schon wieder an zwei Sachen gescheitert: Ein normales StringGrid (keine DB). Da gibt es keine Cells,
¿wie greife ich auf die Zellen zu?
Auch hier der Hinweis, für "ernsthafte" Arbeiten ist twidgetgrid mit eingesetzten t*editwidget besser geeigenet, da die Konfigurierungsmöglichkeiten besser sind.
Ein tmemoedit sollte nicht als Listenersatz misbraucht werden, tmemoedit (und auch Delphis TMemo) speichern den Text als einfachen string, es gibt keinen schnellen zeilenweisen Zugriff. Bitte benütze tstringgrid für Textlisten.Ein TMemoEdit: Da gibt es keine Lines, keine Strings, keine Items, keine Methode Add. ¿Wie füge ich da Einträge zu und lese diese wieder aus?
In der unit msestrings gibt es Routinen um strings in einzelne Zeilen zu teilen (breaklines) und einen string aus einzelnen Zeilen zusammenzusetzen (concatstrings), gib dabei "lineend" als separator an.
Falls du trotzdem mit einem tmemoedit zeilenweise arbeiten möchtest,
Code: Alles auswählen
TheMemoedit.value:= TheMemoedit.value + lineend + 'The text';
Code: Alles auswählen
var
ar1: msestringarty;
begin
ar1:= breaklines(TheMemoedit.value);
Für strings im Zusammenhang mit MSEgui sollte immer der Typ "msestring" verwendet werden.
Die Eigenschaft "value" gibt es in allen edit widgets, auch in tstringedit sollte "value" und nicht "text" verwendet werden.
Edit:
Kein Problem ich habe für Fragen volles Verständnis, MSEide+MSEgui ist wirklich anders.Danke für Deine Geduld
Martin
-
- Beiträge: 155
- Registriert: Mi 22. Aug 2007, 14:52
- OS, Lazarus, FPC: Mandriva Linux 2008 (L 0.9.28 FPC 2.2.4)
- CPU-Target: 32Bit
- Wohnort: 65719 Hofheim am Taunus
- Kontaktdaten:
Re: Datenbanken mit MSEide+MSEgui
Vielen Dank Martin für die wertvollen Links,
bin jetzt schon VIEL weiter, aber eine wichtige Sache habe ich leider nicht gefunden:
ShowModal für eine Form gibt es wohl nicht.
Die Option fo_modal bringt nicht den gewünschten Effekt.
¿Was muss ich machen?
In der News-Group habe ich auch nichts gefunden.
Danke für Deine bereitwillige Hilfe...
bin jetzt schon VIEL weiter, aber eine wichtige Sache habe ich leider nicht gefunden:
ShowModal für eine Form gibt es wohl nicht.
Die Option fo_modal bringt nicht den gewünschten Effekt.
¿Was muss ich machen?
In der News-Group habe ich auch nichts gefunden.
Danke für Deine bereitwillige Hilfe...
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: Datenbanken mit MSEide+MSEgui
fo_modal wirkt nur beim instantiieren des Formulars beispielsweise durch application.createform(). Normalerweise wird der parameter bei twidget.show() benutzt, also z.B. TheModalForm.show(true), dadurch können beliebige widgets in einer eigenen event loop modal laufen.KOBOLD Messring GmbH hat geschrieben: Die Option fo_modal bringt nicht den gewünschten Effekt.
-
- Beiträge: 155
- Registriert: Mi 22. Aug 2007, 14:52
- OS, Lazarus, FPC: Mandriva Linux 2008 (L 0.9.28 FPC 2.2.4)
- CPU-Target: 32Bit
- Wohnort: 65719 Hofheim am Taunus
- Kontaktdaten:
Re: Datenbanken mit MSEide+MSEgui
Nochmals Danke Martin für die Hilfe, Show(true) funktioniert Modal perfekt.
ABER: Datenbank-Zugriff über ODBC auf MySQL und MS-Access unter Lazarus (TODBCConnection) und MSEide (TmseODBCConnection)
¡¡¡ Ich verzweifle noch !!!
Ich dachte, nun einen Weg gefunden zu haben um auch unter Windows an die MS-Access DB heranzukommen.
Sowohl die TODBCConnection von Lazarus als auch die TmseODBCConnection funktionieren super unter Linux auf MySQL (ich mache keine dollen Sachen, nur SELECT, INSERT und UPDATE von Varchar, Integer und Double-Felder).
Bei Windows über den ODBC kann ich problemlos SELECT-Statement machen (die Anwendung kennt die Felder, brauche keine System-Tables etc.), aber
INSERT und UPDATE führen immer zu Fehler:
Anzahl der Parameter stimmt nicht, obwohl das Statement 100% korrekt ist. ¡¡¡Das gleiche Statement in MS-Access ausgeführt funktioniert!!!
Aber über Lazarus und/oder MSEide immer der Fehler, dass die Anzahl der Parameter falsch ist:
UPDATE baumtabelle SET baumart = "Tanne" WHERE ID = 2;
hat doch alle Parameter, ist ein einziger String, nicht mit TParam gemacht.
Habe auch probiert mit und ohne Semikolon hintendran, aber immer das gleiche.
Das gleiche auch bei z.B.
INSERT INTO baumtabelle VALUES (3,"abc","xyz","bnr","Tanne",0.7,0.3,3,0,100,14,0.16,10,1);
Statement funktioniert perfekt in MS-Access, aber über Lazarus/MSEide-ODBC wird die Anzahl der Parameter angemeckert.
¿¿Was mach ich nur falsch, woran könnte es liegen??
¿¿Sind die ODBC-Komponenten wirklich soooo buggy?? ¿¿Alle beide, die von Lazarus UND MSEide??
¿¿Hat jemand eine Idee??
ABER: Datenbank-Zugriff über ODBC auf MySQL und MS-Access unter Lazarus (TODBCConnection) und MSEide (TmseODBCConnection)
¡¡¡ Ich verzweifle noch !!!
Ich dachte, nun einen Weg gefunden zu haben um auch unter Windows an die MS-Access DB heranzukommen.
Sowohl die TODBCConnection von Lazarus als auch die TmseODBCConnection funktionieren super unter Linux auf MySQL (ich mache keine dollen Sachen, nur SELECT, INSERT und UPDATE von Varchar, Integer und Double-Felder).
Bei Windows über den ODBC kann ich problemlos SELECT-Statement machen (die Anwendung kennt die Felder, brauche keine System-Tables etc.), aber
INSERT und UPDATE führen immer zu Fehler:
Anzahl der Parameter stimmt nicht, obwohl das Statement 100% korrekt ist. ¡¡¡Das gleiche Statement in MS-Access ausgeführt funktioniert!!!
Aber über Lazarus und/oder MSEide immer der Fehler, dass die Anzahl der Parameter falsch ist:
UPDATE baumtabelle SET baumart = "Tanne" WHERE ID = 2;
hat doch alle Parameter, ist ein einziger String, nicht mit TParam gemacht.
Habe auch probiert mit und ohne Semikolon hintendran, aber immer das gleiche.
Das gleiche auch bei z.B.
INSERT INTO baumtabelle VALUES (3,"abc","xyz","bnr","Tanne",0.7,0.3,3,0,100,14,0.16,10,1);
Statement funktioniert perfekt in MS-Access, aber über Lazarus/MSEide-ODBC wird die Anzahl der Parameter angemeckert.
¿¿Was mach ich nur falsch, woran könnte es liegen??
¿¿Sind die ODBC-Komponenten wirklich soooo buggy?? ¿¿Alle beide, die von Lazarus UND MSEide??
¿¿Hat jemand eine Idee??
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: Datenbanken mit MSEide+MSEgui
Access via tmseodbcconnection funktioniert bei mir. Kannst du ein MSEgui Projekt (inklusive DB) welches das Problem zeigt posten?KOBOLD Messring GmbH hat geschrieben: ¿¿Was mach ich nur falsch, woran könnte es liegen??
¿¿Sind die ODBC-Komponenten wirklich soooo buggy?? ¿¿Alle beide, die von Lazarus UND MSEide??
¿¿Hat jemand eine Idee??
Martin
-
- Beiträge: 155
- Registriert: Mi 22. Aug 2007, 14:52
- OS, Lazarus, FPC: Mandriva Linux 2008 (L 0.9.28 FPC 2.2.4)
- CPU-Target: 32Bit
- Wohnort: 65719 Hofheim am Taunus
- Kontaktdaten:
Re: Datenbanken mit MSEide+MSEgui
Vielen Dank lieber Martin,
anbei das kleine Testprojektchen mit Access-DB.
Es geht über einen ODBC-DSN namens `baumtest`, der müsste mit `Microsoft Access Treiber (*.mdb)` auf die beigefügte MS-Access-Db `baumtestdb.mdb` verweisen.
Wenn Du da mal nachschauen könntest, wo da der Wurm drin ist. Das merkwürdige ist, dass es unter Linux auf eine MySQL-DB perfekt funktioniert....
anbei das kleine Testprojektchen mit Access-DB.
Es geht über einen ODBC-DSN namens `baumtest`, der müsste mit `Microsoft Access Treiber (*.mdb)` auf die beigefügte MS-Access-Db `baumtestdb.mdb` verweisen.
Wenn Du da mal nachschauen könntest, wo da der Wurm drin ist. Das merkwürdige ist, dass es unter Linux auf eine MySQL-DB perfekt funktioniert....
- Dateianhänge
-
mseide_odbc.zip
- (17.79 KiB) 96-mal heruntergeladen
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: Datenbanken mit MSEide+MSEgui
KOBOLD Messring GmbH hat geschrieben: Wenn Du da mal nachschauen könntest, wo da der Wurm drin ist. Das merkwürdige ist, dass es unter Linux auf eine MySQL-DB perfekt funktioniert....
Code: Alles auswählen
tmsesqlquery2.SQL.Add ('UPDATE baumtabelle SET Baumart = '''+
tstringedit1.value+''' WHERE ID = '+id);
Noch ein Hinweis: in MSEgui brauchst du keine TLabel zur Eingabefeld-Beschriftung, benutze die t*editwidget.frame.caption Eigenschaft.
Martin
Edit: Ich sehe erst jetzt, dass unter Linux MySQL benutzt wird, so dürfte der Unterschied nicht in Linux oder Windows sondern in ODBC oder MySQL liegen.
-
- Beiträge: 155
- Registriert: Mi 22. Aug 2007, 14:52
- OS, Lazarus, FPC: Mandriva Linux 2008 (L 0.9.28 FPC 2.2.4)
- CPU-Target: 32Bit
- Wohnort: 65719 Hofheim am Taunus
- Kontaktdaten:
Re: Datenbanken mit MSEide+MSEgui
Martin ... ¡¡DU BIST EIN GENIE!!
daran lags. Einfache Anführungszeichen ... schon funktioniert`s.
Da wär ich ja nie drauf gekommen, wo doch die Microsoft-Programmierer grosse Fans von den doppelten Anführungszeichen zu sein scheinen (siehe VB-, VBA-Code)
VIELEN VIELEN DANK, Du hast mein Projekt gerettet.
P.S. Damit funktioniert auch die Lazarus-Komponente.
Klar, Du hast Recht, mit dem Abfragen der ID, sollte auch nur ein kleines Beispiel sein.
daran lags. Einfache Anführungszeichen ... schon funktioniert`s.
Da wär ich ja nie drauf gekommen, wo doch die Microsoft-Programmierer grosse Fans von den doppelten Anführungszeichen zu sein scheinen (siehe VB-, VBA-Code)
VIELEN VIELEN DANK, Du hast mein Projekt gerettet.
P.S. Damit funktioniert auch die Lazarus-Komponente.
Klar, Du hast Recht, mit dem Abfragen der ID, sollte auch nur ein kleines Beispiel sein.
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: Datenbanken mit MSEide+MSEgui
Ich meine nicht nur die ID-Erzeugung, sondern auch die insert- update- und delete SQL Statements, welche automatisch gebildet werden können. Mittels SQLDB und den MSEgui DB-Editkomponenten kann man mit modernen SQL-Datenbanken arbeiten wie zu dBase-Zeiten und trotzdem die weiterführenden SQL-Möglichkeiten nutzen. Für kleine lokale Datebanken bietet sich insbesondere auch SQLite3 an.KOBOLD Messring GmbH hat geschrieben: Klar, Du hast Recht, mit dem Abfragen der ID, sollte auch nur ein kleines Beispiel sein.
Martin