Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Использование в дельфи SQLserver-овских таблиц


Автор: Bes 7.6.2005, 15:56
Вообщем я потихоньку перетаскиваю базу с акцесса на SQLServer2000
1) импортнул две таблицы с акцесса на сервер
2) привязал их в акцессе из SQLServer-а (они уже там)
3) программа которая работала с акцессом когда таблицы были в акцессе не хочет теперь работать с акцессом когда таблицы на SQLServer-е
4) выдает ошибку следующего содержания

General SQL error
Необходимо использование параметра dbSeeChanges c OpenDatabase при доступе к таблице SQLServer, которая имеет столбец IDENTI.

Чего это и как победить?
Заранее благодарен.

Автор: Vit 7.6.2005, 23:29
А запрос какой?

Автор: Bes 8.6.2005, 06:32
вот кусок кода после которого вылетает еррор

Код

SaleString:='update каттбл set Остат = [Остат] - :ost  where [ключ] = :kl and [Остат] >= :ostat ';

N:=form2.QueryGrid.FieldByName('Ключ').AsInteger;
form2.QueryAddDetal.Active:=false;
form2.QueryAddDetal.SQL.Text:=saleString;
form2.QueryAddDetal.Params[0].AsFloat:=R;
form2.QueryAddDetal.Params[1].AsInteger:=N;
form2.QueryAddDetal.Params[2].AsFloat:=R;
form2.QueryAddDetal.ExecSQL;


хотя вопрос не в запросе, потому что этот запрос и вообще все работает нормально пока таблица в акцессе.
Как только я эту таблицу перетаскиваю на SQLServer и привязываю ее из акцесса, то программа перестает работать, хотя в самой программе абсолютно никаких изменений - один и тот же екзешник, отсюда делаю вывод - проблема не в коде.

Хотелось бы решить эту проблему путем настройки ODBC или SQLServer потому что иначе я не могу быть уверен в том, что акцессовские формы использующие эту связанную таблицу будут работать корректно, т.к. явно есть какие-то различия в работе с собственными таблицами и таблицами связаными из SQLServer2000

Автор: Bes 8.6.2005, 07:47
ВНИМАНИЕ!!!!!!!!
Оказывается все работает через ADO.
Проблемы возникают только при подключению к Access-у через BDE.
Значит дело в настройках либо TDataBase либо TQuery.
Вопрос: Где нужная "галка"?

Автор: Vit 8.6.2005, 15:42
Для BDE немного синтаксис другой:

Код

update каттбл 
set Остат = "каттбл"."Остат" - :ost  
where "каттбл"."ключ" = :kl and "каттбл"."стат" >= :ostat 


И ещё... в BDE нет поддержки новых версий MS Access... А чем ADO не устраивает?

Автор: Bes 9.6.2005, 06:29
ADO не устраивает во этим.
http://forum.vingrad.ru/index.php?showtopic=54911&unread=1&st=0&#entry436526
блин или работет чисто BDE + Access либо ADO + MSSQLServer2000 а если сделать в акцессе связаную таблицу из SQLServer-а то вот или эта проблема с БДЕ или вот эта
http://forum.vingrad.ru/index.php?showtopic=54911&unread=1&st=0&#entry436526
с АДО. smile

P.S. кстати, помоему дело не в синтаксисе хотя я попробую. и акцесс 97-й
Мне кажется в настройках компонента TDateBase. где бы найти толковое описание для каждой опции....

Да вот. не выполняется такой код

Код

Query1.Active:=false;
Query1.SQL.Text:='update icoltest set [name] = :nam where id_col =3';
Query1.Params[0].AsString:='asd1';
Query1.ExecSQL;

где параметры TDataBase

DriverName = MSACCESS

DATABASE NAME=C:\mytab.mdb
USER NAME=
OPEN MODE=READ/WRITE
LANGDRIVER=
SYSTEM DATABASE=
PASSWORD=


Параметры подключения ODBC

Microsoft SQL Server ODBC Driver Version 03.81.9001

Data Source Name: Test2
Data Source Description:
Server: SERGEY
Database: pubs
Language: (Default)
Translate Character Data: Yes
Log Long Running Queries: No
Log Driver Statistics: No
Use Integrated Security: Yes
Use Regional Settings: No
Prepared Statements Option: Drop temporary procedures on disconnect
Use Failover Server: No
Use ANSI Quoted Identifiers: Yes
Use ANSI Null, Paddings and Warnings: Yes
Data Encryption: No


В результате ошибка

General SQL error
Необходимо использование параметра dbSeeChanges c OpenDatabase при доступе к таблице SQLServer, которая имеет столбец IDENTI.

что делать? что не так?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)