在我当前的应用程序中,我可以将数据源的dataset设置为表组件(来自Devart.com的IBdac组件),这使我能够直接编辑dbgrid中的数据。uibdataset是只读的,这意味着它不能编辑任何东西,除非通过update sql。如何使用UIB组件实现此属性?我使用的是delphi xe,firebird2.5。
发布于 2011-10-04 13:31:29
我对UIB不是很熟悉,但是你尝试过使用TUIBQuery组件吗?在我的应用程序中,我总是使用IBQuery来修改数据。实际上我使用的是:TIBQuery -> TDataSetProvider -> TClientDataSet -> TDataSource
如果您使用的是TDataSetProvider,则必须调用TClientDataSet.ApplyUpdates将更改发布到底层数据库。
发布于 2016-09-18 21:22:15
你必须放置一个TUIBDatabase,然后放置一个TUIBDataSet,它应该连接到您的TUIBDatabase和TUIBTransaction在最后放置一个连接到TUIBDatabase的TDataSource : TUIBDatabase -> TUIBDatabase -> TDataSource
e.g
object UIBTransaction1: TUIBTransaction
DataBase = UIBDataBase1
end
object UIBDataBase1: TUIBDataBase
Params.Strings = (
'sql_dialect=3'
'lc_ctype=NONE'
'user_name=SYSDBA'
'password=masterkey'
'sql_role_name=')
DatabaseName =
'D:\FIREBIRDTEST.FDB'
UserName = 'SYSDBA'
PassWord = 'masterkey'
LibraryName = 'fbclient.dll'
end
object UIBDataSet1: TUIBDataSet
Transaction = UIBTransaction1
Database = UIBDataBase1
SQL.Strings = ('select * from CUSTOMER;')
end
object DataSource1: TDataSource
DataSet = UIBDataSet1
end您也可以使用markus_ja提到的选项,但是不要使用TUIBQuery,而要使用TUIBDatabase
TUIBDatabase -> TUIBDatabase -> TDataSetProvider -> TClientDataSet -> TDataSource
只需将此代码粘贴到您的表单上:
object UIBTransaction1: TUIBTransaction
DataBase = UIBDataBase1
Left = 120
Top = 112
end
object UIBDataBase1: TUIBDataBase
Params.Strings = (
'sql_dialect=3'
'lc_ctype=NONE'
'user_name=SYSDBA'
'password=masterkey'
'sql_role_name=')
DatabaseName =
'D:\FIREBIRDTEST.FDB'
UserName = 'SYSDBA'
PassWord = 'masterkey'
LibraryName = 'fbclient.dll'
end
object UIBDataSet1: TUIBDataSet
Transaction = UIBTransaction1
Database = UIBDataBase1
SQL.Strings = ('select * from CUSTOMER;')
end
object DataSetProvider1: TDataSetProvider
DataSet = UIBDataSet1
end
object ClientDataSet1: TClientDataSet
ProviderName = 'DataSetProvider1'
end
object DataSource1: TDataSource
DataSet = ClientDataSet1
end我希望这对你有帮助
https://stackoverflow.com/questions/7632213
复制相似问题