|
#1
|
|||
|
|||
#Error в Поле Memo в бд Access
Доброго времени суток! У меня следующий вопрос. Имеется база данных Access, приложение, написанное на делфи. Приходят мои не самые одаренные пользователи, которые умудряются ложить базу каждую неделю с очередной ябедой, при запуске программа выдает сообщение об ошибке Поставщик данных вернул e_fail. Открываю базу и вижу в поле Мемо: #Ошибка. И таких строк подряд штук 25. Восстанавливаю данные, все работает. Но я своих знаю, если у них один раз так получилось, будет подобное вылезать постоянно. Пару раз видела, как эти ленивые жопки вместо заполнения обязательных полей в приложении, копируют данные из текста, написанного в ворде. Подозреваю, что все из-за этого. Собственно вопрос, а есть ли такие символы, которые в поле Мемо бд Access вызывают сообщение об ошибке, или которые не передаются через ado? И как вот отловить момент, когда в поле появляется #ошибка? На форме лежит tmemo, adoconnection.
Последний раз редактировалось Блондинка, 29.06.2015 в 18:06. |
#2
|
||||
|
||||
Такие символы есть, но в мемо они пролезть не могут, ограничения класса TStrings такое не пропускают, может у вас всёж DBMemo?
З.Ы. #Ошибка (#Error) вылазит если попалась в таблице пустая запись Код:
//Dev Ashish 000112 ошибку #Error можно отловить :) // Not Numeric return zero function nnz(testvalue: variant): variant; begin If IsNumeric(testvalue) then Result:= testvalue else Result:= 0; end; //Function Я не понял Вашего вопроса, но всё же Вам на него отвечу! Последний раз редактировалось Alegun, 29.06.2015 в 17:01. |
#3
|
|||
|
|||
не-не, точно не dbmemo. А вот memo у меня обязательное, там не может быть пустой строки. Проверка стоит. Вот поэтому я и думаю, может символы форматирования какие-нибудь невидимые в ворде есть? а про ограничения класса tstring поподробнее где почитать?
|
#4
|
|||
|
|||
и еще вопрос, а запретить именно вставлять скопированный текст можно?
|
#5
|
||||
|
||||
Проверка типа
Код:
if Length(Memo.Text) <> 0 then... Цитата:
Код:
uses ClipBrd; procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if ((Key = ord('V')) and (ssCtrl in Shift)) then begin if Clipboard.HasFormat(CF_TEXT) then ClipBoard.Clear; Memo1.SelText := 'Нельзя копипастить!'; key := 0; end; end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#6
|
|||
|
|||
ну да, подобная. Спасибо! Попробую отловить ошибку, а пока пусть ручками вбивают все...
|