在我当前的应用程序中,我可以将数据源的数据集设置为表组件(来自Devart.com的IBdac组件),这使我能够直接编辑dbgrid中的数据。 uibdataset是只读的,这意味着除了通过更新sql之外无法编辑任何内容。 如何使用UIB组件实现此属性? 我正在使用delphi xe,firebird2.5。
答案 0 :(得分:0)
我对UIB并不熟悉,但您是否尝试使用TUIBQuery组件?在我的应用程序中,我总是使用IBQuery来修改数据。
其实我用的是:
TIBQuery -> TDataSetProvider -> TClientDataSet -> TDataSource
如果您使用TDataSetProvider
,则必须调用TClientDataSet.ApplyUpdates
将更改发布到基础数据库。
答案 1 :(得分:0)
你必须把一个TUIBDatabase,TUIBTransaction然后放一个TUIBDataSet,它应该连接到你的TUIBDatabase和TUIBTransaction,最后把一个TDataSource连接到TUIBDatabase: 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
我希望有帮助