如何使用UIB-Unified Interbase(http://www.progdigy.com/?page_id=5)直接与数据进行交互?

时间:2011-10-03 07:36:33

标签: delphi delphi-xe

在我当前的应用程序中,我可以将数据源的数据集设置为表组件(来自Devart.com的IBdac组件),这使我能够直接编辑dbgrid中的数据。 uibdataset是只读的,这意味着除了通过更新sql之外无法编辑任何内容。 如何使用UIB组件实现此属性? 我正在使用delphi xe,firebird2.5。

2 个答案:

答案 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

我希望有帮助