Как я могу напрямую взаимодействовать с данными с помощью UIB-Unified Interbase (http://www.progdigy.com/?page_id=5)? - PullRequest
2 голосов
/ 03 октября 2011

в моем текущем приложении я могу установить набор данных источника данных для компонента таблицы (компонент IBdac от Devart.com), что позволяет мне редактировать данные в dbgrid напрямую. uibdataset только для чтения, что означает, что невозможно редактировать какие-либо вещи, кроме как через обновление SQL. Как я могу достичь этих свойств с компонентами UIB? я использую delphi xe, firebird2.5.

Ответы [ 2 ]

0 голосов
/ 18 сентября 2016

Вы должны поместить TUIBDatabase, TUIBTransaction, затем TUIBDataSet, и он должен быть подключен к вашей TUIBDatabase, а TUIBTransaction в конце поставить TDataSource, подключенный к TUIBDatabase: TUIBDatabase -> TUIBDatabase -> TDataSource

например

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

Я надеюсь, что это поможет

0 голосов
/ 04 октября 2011

Я не знаком с UIB, но вы пытались использовать компонент TUIBQuery?В моем приложении я всегда использую IBQuery для изменения данных.На самом деле я использую: TIBQuery -> TDataSetProvider -> TClientDataSet -> TDataSource

Если вы используете TDataSetProvider, вы должны вызвать TClientDataSet.ApplyUpdates для публикации изменений в базовой базе данных.

...