Не поможете с проблемой использования OleDBCommandBuilder?
var
_Instance: System.Data.DataSet;
_dataAdapter: System.Data.OleDB.OleDbDataAdapter;
_commandBuilder: System.Data.OleDB.OleDBCommandBuilder;
_connection: System.Data.OleDb.OleDbConnection;
_selectCommand, uC: System.Data.OleDb.OleDbCommand;
begin
if not Assigned(_Instance) then
begin
_connection := GetConnection; //коннек
_selectCommand := System.Data.OleDb.OleDbCommand.Create(
'SELECT * FROM odt_test t WHERE t.id = ?',
_connection
);
with _selectCommand.Parameters.Add('', oleDbType.VarChar) do
begin
Value := Self.ID;
Size := 200;
end;
_Instance := System.Data.DataSet.Create;
_dataAdapter := System.Data.OleDb.OleDbDataAdapter.Create(_selectCommand);
_dataAdapter.Fill(_Instance);
_commandBuilder := System.Data.OleDB.OleDBCommandBuilder.Create(_dataAdapter);
// для проверки
uC := _commandBuilder.getUpdateCommand;
end;
|
Последняя строчка генирирует исключение:
System.InvalidOperationException: Динамическое создание SQL для UpdateCommand не поддерживается для SelectCommand, не возвращающего никакой информации о столбце ключей.
Везде, в том числе и на sql.ru, пишут, что вот мол надо добавить PK в табличку. Так на это крайне недвусмысленно намекает исключение, поэтому, естественно, в моей табличке он есть (поле ID).
Только, пожалуйста, не советуйте не использовать OleDBCommandBuilder, а прописать команды инсерта, апдейта и делита явно )) это на всякий случай ))