Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2012, 23:34   #1
Xardas
Сисадмин
Форумчанин
 
Аватар для Xardas
 
Регистрация: 28.12.2007
Сообщений: 320
По умолчанию Вставить в поле БД Access пустую строку

Доброго времени суток, уважаемые участники форума!

Имеется БД в Access и приложение к ней, написанное не мной. Появилась необходимость добавить форму редактирования записей к одной из таблиц, до этого можно было только просматривать и добавлять новые. Взял форму, с которой добавляются новые записи, хотел переделать ее и под редактирование. При попытке записать пустую строку в поле текстового типа, получаем исключение: "Недопустимое значение точности":

Код:
....
ADOQuery.SQL.Add('UPDATE таблица SET текстовое_поле = :параметр_1 ');
ADOQuery.SQL.Add('WHERE ........');
ADOQuery.Parameters.ParamByName('параметр_1').Value := edit.text //здесь пустая строка;
......
Допустим, в эдите отображается какой-то комментарий, его нужно удалить и записать изменения в базу. В БД для этого поля разрешены пустые значения, однако таким образом занести изменения не получается.

Подскажите, пожалуйста, как можно решить такую проблему? Или придется использовать дбЭдиты с ДатаСурсами, чтобы редактируемые значения сразу писались в базу? Хотелось бы сделать проверку на корректность изменения значений ВО ВСЕХ эдитах и только потом уже писать все изменения в БД.
Xardas вне форума Ответить с цитированием
Старый 15.12.2012, 23:59   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Попробуйте после присвоения в Value задать в Size длину строкового параметра
Код:
ADOQuery.Parameters.ParamByName('параметр_1').Size:=0;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.12.2012, 00:22   #3
Xardas
Сисадмин
Форумчанин
 
Аватар для Xardas
 
Регистрация: 28.12.2007
Сообщений: 320
По умолчанию

Аватар, исключение: "Предоставлены несогласованные или неполные сведения". Если поставить size=1, то записывается, но естественно перестают работать проверки этих полей на null в других участках кода

Последний раз редактировалось Xardas; 16.12.2012 в 00:25.
Xardas вне форума Ответить с цитированием
Старый 16.12.2012, 00:32   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Так ставьте конкректно когда нужно. Да, какой провайдер для работы с базой используете?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.12.2012, 00:39   #5
Xardas
Сисадмин
Форумчанин
 
Аватар для Xardas
 
Регистрация: 28.12.2007
Сообщений: 320
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Так ставьте конкректно когда нужно. Да, какой провайдер для работы с базой используете?
Так я и ставлю size=0, только когда это нужно. Все равно вылезает исключение. Провайдер MSDASQL.1
Xardas вне форума Ответить с цитированием
Старый 16.12.2012, 00:43   #6
Xardas
Сисадмин
Форумчанин
 
Аватар для Xardas
 
Регистрация: 28.12.2007
Сообщений: 320
По умолчанию

Аватар, спасибо большое за наводку, смена провайдера решила проблему
Xardas вне форума Ответить с цитированием
Старый 16.12.2012, 00:43   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Я бы и не мучался перешел на JET OLEDB. Вы не один жалуетесь на подбный глюк ODBC
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.12.2012, 01:05   #8
Xardas
Сисадмин
Форумчанин
 
Аватар для Xardas
 
Регистрация: 28.12.2007
Сообщений: 320
По умолчанию

Цитата:
Я бы и не мучался перешел на JET OLEDB. Вы не один жалуетесь на подбный глюк ODBC
Да, действительно. Microsoft.ACE.OLEDB.12.0 решил все проблемы. Аватар, еще раз огромное спасибо за помощь!
Xardas вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вставить пустую строку? n0str0m0 Microsoft Office Excel 8 06.01.2017 14:17
Двунаправленный линейный список строк. Вставить строку, удалить строку и заменить строку tarasman11 Паскаль, Turbo Pascal, PascalABC.NET 4 05.07.2012 20:27
Как вставить в поле со списком последнюю строку или запись из необходимой таблицы serega1576 Microsoft Office Access 3 12.06.2011 06:07
Копировать строку фильтрованного списка в другую книгу, на последнюю пустую строку Gvaridos Microsoft Office Excel 11 24.11.2010 00:48
если поле Patr пусто или null то пустую строку возвращает azat БД в Delphi 5 01.02.2008 13:05