![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
MS SQL Server 2000+ADO+Delphi6 [D6, SQL Server 2000]
lark © (2003-02-18 06:00:00)База данных SQL Server 2000. Соединение через ADOConnection. Доступ к данным из программы посредством ADODataSet, ADOCommand. Программа работает давно и успешно. Требуется внести в нее дополнения. Проблема в следующем. Оператор Select через Датасет работает, а вот Insert, Delete и Update через ADOCommand говорит: EOleException... "Invalid object
name "TableName"". Совершенно аналогичные инструкции в этом же коде с этими же таблицами, написанные ранее, работают! Эту проблему удалось обойти только установкой ConnectionString в ADOCommand вместо ссылки на нее в ADOConnection. Но! Почему вносимые в CommandText изменения в виде добавления новых полей для Insert/Update ADOCommand упорно игнорирует???
lark (2003-02-19 06:21:00) [1]jocko
>Возможно список параметров сформирован не полностью
Если список полей неправильно сформирован, запрос вообще не будет работать. Если интересно, строка такая:
"INSERT INTO TLOG (Date_, Arrival, Reserve, Name, Ar_Ex, N_Card, Expense, Pcod, Art_) VALUES ("02.02.2003",0,1,"Беляев",1,2,0,50,18)"
В предыдущей версии не было поля Art_. Какие мнения?
jocko (2003-02-18 13:29:00) [2]Повторюсь:
Возможно список параметров сформирован не полностью, варианты: или написать код который возвратит список имен этих параметров для проверки, или хотябы их число; убрать try на время = Stop on Delphi Exeption, я обычно убираю try
PS ЕСЛИ ПАРАМЕТР NULL ЗНАЧИТ ОН НЕ ПРИСВАИВАЕТСЯ!!!
D (2003-02-18 13:22:00) [3]>Insert, Update всего лишь дополняю еще одним полем, CommandText формируется правильно, молча выполняет, но в БД в значение нового поля уходит <NULL>.
Может, не так входные параметры (новые значения полей) для Insert, Update присваиваешь?
lark (2003-02-18 12:59:00) [4]Рабочий день прошел впустую :о(
Проблема осталась:
>Insert, Update всего лишь дополняю еще одним полем, CommandText формируется правильно, молча выполняет, но в БД в значение нового поля уходит <NULL>.
Кто-нибудь поможет???
lark (2003-02-18 12:13:00) [5]jocko
>Чисто в твоем случае .... попробуй смоделируй ситуацию на тестовом примере вне всего приложения т.е чисто ADOCommand + ADOConnection и запусти
Смоделировала, все работает, но не писать же заново огромный проект?!
lark (2003-02-18 11:44:00) [6]Сервер перезагрузила. "Login failed for user "lark"" - сказало мне EOleException при попытке записать что-нибудь в базу (это раньше работало).
А параметры заносятся на основании введенных пользователем полей. Try мне особо не мешает, я ж сообщения Дельфи читаю, а не свои обработчики.
jocko (2003-02-18 11:28:00) [7]а как формируется список параметров?
кстати запрос небось в try завернут, может его убрать?
Дима2003 (2003-02-18 11:03:00) [8]Сервер перегрузи
lark (2003-02-18 10:49:00) [9]>jocko
>честно говоря все ins, upd, del я выполняю только ХП и через ADOCommand + ADOConnection проблем никогда нет, что и рекомендую
Проблем действительно раньше не было, программа работает 3 (третий) год! Добавила еще одну таблицу в БД и пару полей в старых таблицах. Insert, Update всего лишь дополняю еще одним полем, CommandText формируется правильно, молча выполняет, но в БД уходит <NULL>. Доп.таблица внесена во все используемые роли, все колонки равноправны. Где ловить ошибку?
jocko (2003-02-18 10:40:00) [10]>Я пользуюсь только AdoQuery
может я чего не понимаю, но зачем тащить логику уровня БД в логику уровня приложения...
2 lark
честно говоря все ins, upd, del я выполняю только ХП и через ADOCommand + ADOConnection проблем никогда нет, что и рекомендую
Чисто в твоем случае надо искать в коде, тут ничем не поможешь, попробуй смоделируй ситуацию на тестовом примере вне всего приложения т.е чисто ADOCommand + ADOConnection и запусти
PS: помоему TADOQuery вообще лишняя вещь в дельфе, глаза мозолит
Дима2003 (2003-02-18 10:11:00) [11]Я пользуюсь только AdoQuery. Всё великолепно работает. Если SELECT то открываю словом Open, если INSERT, UPDATE, DELETE - словом ExecSQL.