редактировать Я должен отметить, что я пытаюсь сделать это с помощью Delphi 2006.Как сделать параметр ADO для обновления столбца datetime SQL Server?
ОК, я думаю, что я попал на вопрос без каких-либо предыдущих ответов.
У меня есть база данных SQL Server с столбцами типа datetime
. Когда я пытаюсь вставить строку с параметризованной командой, я получаю
Exception class EOleException with message
'[Microsoft][ODBC SQL Server Driver]Optional feature not implemented'.
Моей процедуры вставка выглядит следующим образом:
procedure TForm1.btnZoomClick(Sender: TObject);
const
InsCmd = 'insert into dbo.foo (added, edited, editor, narrative) ' +
'values (:dateAdded, :dateEdited, :theEditor, :theNarrative);';
begin
dmDbToy2.DataModule2.ADOCommand1.CommandText := InsCmd;
with DataModule2.ADOCommand1.Parameters do
begin
// the following line was an attempt to trick VarAsType into making a
// adDbTimeStamp: VarAsType is having none of it.
// FindParam('dateAdded').Value := VarAsType(VarFromDateTime(Now), 135);
FindParam('dateAdded').Value := VarFromDateTime(Now);
FindParam('dateEdited').Value := Null;
FindParam('theEditor').Value := 'wades';
FindParam('theNarrative').Value := Null;
end;
DataModule2.ADOCommand1.Execute;
end;
Я нашел несколько проводок через google, которые, кажется, показывают, что SQL Server хочет adDbTimeStamp
, чтобы обновить эти столбцы, но VarAsType не хочет делать это для меня.
Есть ли способ создать значение для параметров dateAdded
и dateEdited
в образце кода?
вы пробовали с помощью 'FindParam («dateAdded») AsDate: = Теперь, '? (Может быть AsDateTime, работающий из памяти здесь) –
Этот подход вызывает 'EVariantInvalidOpError' с сообщением 'Invalid variant operation'. – wades
wades, может быть, проблема заключается в том, что вы используете. покажите свою строку подключения, чтобы увидеть текущего поставщика, используемого вашим приложением. – RRUZ