Goed, om dit probleem te debuggen heb ik een makkelijk reproduceerbare situatie gemaakt.
Mijn env:
MySQL 5 community server
libmysql.dll 5 van MySQL website (uit windows php ondersteuning-download)
Laatste versie Lazarus met FPC 2.0.4
1. Start lazarus, maak een nieuw formulier.
2. Zet daarop een TMySQL50Connection, een TSQLTransaction, een TSQLQuery, een TDataSet, een TDBGrid, en 2 butons.
3. Stel at designtime in:
MySQL login + db info in MySQL50Connection1
MySQL50Connection1.Transaction op SQLTransaction1
SQLTransaction1.Database op MySQL50Connection1
SQLQuery1.Database op MySQL50Connection1
SQLQuery1.Transaction op SQLTransaction1
SQLQuery1.SQL (.add) op 'SELECT * FROM table'
DataSource1.DataSet op SQLQuery1
dbGrid1.DataSource op DataSource1
Dan prog ik de buttons als volgt:
Button1 opent netjes de database en zet de inhoud in de dbGrid. Als ik nu iets verander, en daarna op button2 klik, dan krijg ik een niet nader gedocumenteerde EDatabaseError (Lazarus grijpt in.).
Kan iemand zeggen wat ik over het hoofd zie?
Mijn env:
MySQL 5 community server
libmysql.dll 5 van MySQL website (uit windows php ondersteuning-download)
Laatste versie Lazarus met FPC 2.0.4
1. Start lazarus, maak een nieuw formulier.
2. Zet daarop een TMySQL50Connection, een TSQLTransaction, een TSQLQuery, een TDataSet, een TDBGrid, en 2 butons.
3. Stel at designtime in:
MySQL login + db info in MySQL50Connection1
MySQL50Connection1.Transaction op SQLTransaction1
SQLTransaction1.Database op MySQL50Connection1
SQLQuery1.Database op MySQL50Connection1
SQLQuery1.Transaction op SQLTransaction1
SQLQuery1.SQL (.add) op 'SELECT * FROM table'
DataSource1.DataSet op SQLQuery1
dbGrid1.DataSource op DataSource1
Dan prog ik de buttons als volgt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| procedure TForm1.Button1Click(Sender: TObject); begin MySQL50Connection1.Connected:=True; SQLQuery1.Open; end; procedure TForm1.Button2Click(Sender: TObject); begin SQLQuery1.Post; SQLQuery1.ApplyUpdates; SQLTransaction1.Commit; SQLQuery1.Close; end; |
Button1 opent netjes de database en zet de inhoud in de dbGrid. Als ik nu iets verander, en daarna op button2 klik, dan krijg ik een niet nader gedocumenteerde EDatabaseError (Lazarus grijpt in.).
Kan iemand zeggen wat ik over het hoofd zie?