mit diesem Problem komme ich nicht weiter, vielleicht weiss ja jemand hier die Lösung.
Datenbank MySQL 5.5 unter Windows
Lazarus 1.0.10 unter Windows
Zum Schreiben der Daten in die Datenbank benutze ich:
- MySQL55Connection,
- SQLTransaction,
- SQLQuery,
- Datasource
- DBEdit, DBLookupComboBox und DBGrid
- DBNavigator
Die Eigenschaft vom UpdateMode ist auf upWhereKeyOnly gestellt.
Unter SQL steht: SELECT * FROM tabellenname ORDER BY Feld
Beim AfterPost Ereignis mache ich ein SQLQuery.ApplyUpdates und schliesse/öffne die SQLQuery kurz.
Das läuft auch alles so ganz gut. Ich kann wahlweise die DBEdit Felder oder das DBGrid benutzen um Daten einzufügen, zu löschen oder zu ändern. Bei und bei den Fremdschlüsselfeldern natürlich nur die DBLookupComboBoxen und nicht das DBGrid.
Wenn ich aber im DBGrid zusätzlich ein Feld aus einer anderen Tabelle anzeigen will, also zwei Tabellen ungefähr so abfrage:
Code: Alles auswählen
SELECT
tabelle1.Feld1,
tabelle1.Feld2,
tabelle2.Feld1,
tabelle2.Feld2
FROM
tabelle1
INNER JOIN
tabelle2 ON tabelle1.Feld1 = tabelle2.Feld1
ORDER BY
tabelle1.Feld1 ASC
Verhält sich alles wie schreibgeschützt. Ich kann alles sehen und scrollen, aber keine Änderungen vornehmen. Weiss jemand woran das liegt? Die beiden Tabellen stehen in Beziehung zueinander (1:n). Aber ich will in der Detailtabelle ja nicht den PK der Elterntabelle sehen, sondern das "richtige" Feld.
Eine Idee war, zwei SQLQuery zu benutzen. Dann könnte ich eine mit den DBEdit und DBLookupComboBoxen zum Ändern verbinden und die andere nur zum anzeigen im DBGrrid.
Aber vielleicht gibt es ja eine ganz einfache Lösung. Auch läuft der Cursor im DBGrid dann nicht mit.
Gruss Matze