![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ADOQuery & WIN98 v4.10
NovaC © (2006-12-29 05:03:00)Доброе время суток !
Под Win2000 & WinXP всё работает работает безошибочно
В Win98 INSERT проходит а при UPDATE появляется ошибка :
Error: [Microsoft] [ODBC dBase Driver] Operation must use an updateble query
--------------INSERT:
temp := 'Provider=MSDASQL.1;' +
'Persist Security Info=False;' +
'Data Source=Файлы dBASE;' +
'Initial Catalog=' + StrPas(dbfDir);
ADOConnection1.ConnectionString := temp;
ADOQuery1.Connection := ADOConnection1;
ADOQuery1.ParamCheck := true;
temp := Format ('INSERT INTO .. (...) VALUES (...)', [...]);
try
ADOConnection1.Execute(temp);
except
on e : exception do MessageDlg(e.message,mtError, [mbOK],0);
end;
ADOQuery1.Close;
ADOConnection1.Close;
--------------UPDATE:
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
temp := 'SELECT * FROM ... WHERE ....;
ADOQuery1.SQL.Text := temp;
ADOQuery1.Parameters.ParseSQL(ADOQuery1.SQL.Text, true);
ADOQuery1.Parameters [0].Value := IP;
ADOQuery1.Parameters [1].Value := Host;
ADOQuery1.Open;
except
on e : exception do MessageDlg(e.message,mtError, [mbOK],0);
end;
temp := Format ('UPDATE ... SET .... WHERE ...', [...]);
try
ADOConnection1.Execute(temp);
except
on e : exception do MessageDlg(e.message,mtError, [mbOK],0);
end
end;
ADOQuery1.Close;
ADOConnection1.Close;
Заранее спасибо за ответ . . .
NovaC (2007-01-09 13:24:00) [1]Спасибо всем за помощь
UPDATE заработал !!!
через 'Provider=Microsoft.Jet.OLEDB.4.0'
после обновления MS JET до v4.00.8015: jet40sp8_Win9xnt.exe
через 'Provider=MSDASQL.1'
после обновления MDAC до v2.81.1117.0 : MDAC_TYP.EXE
Вопрос исчерпан.
sniknik (2006-12-29 11:08:00) [2]> mdac попробуй обнови до последнего
обновлять для этого случая нужно не mdac, а jet, и до кучи установить BDE везде, для гарантии (не шутка).
т.к. используется DSN "Файлы dBASE" (драйвер dbase), кстати указание DSN само по себе нехорошо... будет по другому назван на машине с другой (английской) локализацией, или его может не быть вообще.
из неявного, драйвер dbase odbc в последних версиях сам не работает, передает команды в oledb jet, у которого в свою очередь фича работать через BDE если оно установлено, если нет то через свой урезанный по возможностям (в частности на обновление данных) аналог. в чем и "проблема" (описанное в хелпе это уже не баг, это фича). впрочем, я пользуюсь довольно старой справкой, да и в ней упор на двойственность (с BDE/без BDE) для парадокса в основном, с dbase сам встречал работало на обновление и без BDE... что это было старый драйвер (родной ODBC), или в новых версиях jet-а добавили всетаки обновление данных для dbase в свой урезанный аналог х.з. разбираться было недосуг.
p.s. чтобы не нужно было вникать во все подобные заморочки, и гадать что где чего использует, пользуйся непосредственно jet-ом, ну для установки на другие копмпы делай инсталятор программе в который включай все используемое у себя.
ORMADA (2006-12-29 09:39:00) [3]АДО под 9х вообще работает не так под под NT
ничего удивительного даже в MSDN написано что програ сделаная под NT с применением АДО НЕ будет работать одинаково на 9.х
mdac попробуй обнови до последнего