On Fri, 2007-06-22 at 10:43 +1000, John wrote: > Joost van der Sluis wrote: > > > IN principle you can set ReadOnly to false and ParseSQL to true. That > > way sqldb tries to parse your query. If it's a simple 'select * from > > table' the TSQLQuery will be updateable. It automatically generates > > update/delete and insert queries. For the 'where' clause is uses by > > default the primary key of the table. (That's a setting, upWhereKeyOnly) > > > > For example: 'delete * from table where pk=:old_pk' > > > > If you edit some data, those changes will be stored in an updatebuffer. > > With TSQLQuery.CancelUpdates all those changes are lost. But if you > > call .ApplyUpdates, it will execute one query for every changed record. > > (That could be a insert, update or delete query) > > > So if I change some field values and post the record, that changed data > goes into the update buffer - of TBufDataset ? I should then be able to > accumulate a few changes of these, and then, in code, call > TSQLQuery.ApplyUpdate, and it should be sent to the database ? Should > this also commit at the database level, or do I have to do this ? > (I think I tried this, but didn't pursue it very far, because I wasn't > sure if it even should work)
You have still to commit the database-transaction. (SQLQuery.Transaction.commit(retaining)) And yes, the buffer is handled by TBufDataset. > Would it be feasible / sensible to call ApplyUpdate from an AfterPost > event handler ? Yes, you could do that. But that could generate a lot of sql-traffic. Maybe in an after-scroll is a better idea. > > Those are the basics. If you have questions, ask them here. And if you > > have any time, please document it somewhere on the wiki. ;) > I will, if I get to the point of thinking I understand it enough to not > make a fool of myself! Just start it, others will correct mistakes if needed. Joost _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal