Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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.


Наверх

Титульная страница Поиск, карта сайта Написать письмо