![]() |
|
|
![]()
|
|
| Napalm |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 4.3.2004 Репутация: нет Всего: нет |
Есть БД в полях таблиц которой активно используется тип комп. Подключаюсь к БД через ODBC. Задача простая: есть id записи в стринге (в базе это поле тип comp), изменить значения неких полей и проапдейтить. Делал 2мя способами
1. AdoCommand внутри update katmc k set zapasmin=:min,zapasmax=:max where nrec=:nrec вызов из программы
проблема вылазит когда nrec (в базе тип comp, а массив строки) больше 14 символов. програма вываливается с ошибкой 2. вариант через AdoQuery запрос select convert(nrec,sql_char)+'' as nrec,name,tnved,zapasmin,zapasmax from katmc конвер нужен, иначе возвращает ботву с плавающей запятой с которой работать потом невозможно. вызов
вроде как работает. однако при большом кол-ве повторений в цикле (а нигда и на первой записи) вываливает ошибку. то говорит что не может проапдейтить НЕСКОЛЬКО записей одновременно, то ругается на ключ. nrec - первичный ключ. остальные поля в индексы не входят. вопрос в следующем как сие чудо побороть... мало того что второй способ очень медленный, так еще оба способа и ненадежные. может кто подскажет или как побороть или компонент какой другой использовать, или как мне это подправить??? |
||||
|
|||||
| <Spawn> |
|
||||||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 2 Всего: 64 |
Ты уверен, что nrec у тебя первичный ключ? Такой ошибки не должно быть, если бы он был действительно уникальным. Попробуй этот код и скажи результаты:
И еще одно. Я не работал с типом Comp. Что он из себя представляет? Вещественные значения? Если так, то почему бы тебе при обновлении в первом случае не пользоваться своей конвертацией, которую ты уже сам написал? Т.е. приведи сравниваемые данные явно к одному типу. Что то типа этого:
Это сообщение отредактировал(а) <Spawn> - 21.5.2005, 06:00 -------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
||||||
|
|||||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 14 Всего: 207 |
Типа Comp в базах данных вроде нет, по крайней мере как стандартного (кстати не указана базы данных) и стандартные средства доступа типа BDE/ODBC/ADO могут его некорректно делать, советую явно его приводить
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |