PDA

Показать полную графическую версию : Очень странная проблемка с добавлением в базу dbf


Ригадон
17-11-2010, 12:00
В общем ситуация такая при записи в таблицу а именно Table.Рost выдает ошибку Cannot perfom this operation on an open DataSet
в моем случае датасетом выступает ТТабле при этом в данном случае она открыта и своиство рид онли в фелсе... Если ее закрываю то говорит что не может записать так как она закрыта... :))
Код:
Form2.Table2.Active:=true;
Form2.Table2.ReadOnly:=false;
Form2.Table2.Append;
Form2.Table2.FieldByName('INN').AsString:=Form3.Label4.Caption;
Form2.Table2.FieldByName('FIO').AsString:=Form3.Label2.Caption;
Form2.Table2.FieldByName('Manager').AsString:=Manager;
Form2.Table2.FieldByName('dwrite').AsString:=DateToStr(now)+' '+TimeToStr(Time);
Form2.Table2.FieldByName('Info').AsString:=Form4.Memo1.Lines.Text;
Form2.Table2.FieldByName('Dog').AsString:=dog;
Form2.Table2.FieldByName('Ddog').AsString:='';
Form2.Table2.Post; /Ошибка выдается именно после этой команды/

LilLoco
17-11-2010, 13:18
Нужно перевести таблицу в режим вставки


Form2.Table2.Insert;
//Что то вставляем
Form2.Table2.Post;

Ригадон
17-11-2010, 13:47
Append и Insert одно и тоже за исключением того что Апенд добавляет в конец таблицы сразуже без перемещениия позиции и не создает индекс насколько я знаю...
Инсерт тоже пробывал ПС такиеже ошибки... :))

LilLoco
17-11-2010, 14:29
Ошибка будет даже на строке

Form2.Table2.ReadOnly:=false;

не получится выполнить операцию на ОТКРЫТОЙ таблице!

Сначала закройте таблицу, поставьте свойство readonly в false, откройте таблицу, вставляйте!

Ригадон
17-11-2010, 15:16
Тут согласен... :)
Теперь появилась следующая ошибка: Raised exception class EDBEngine error with message "General SQL error"

LilLoco
17-11-2010, 15:30
Raised exception class EDBEngine error with message "General SQL error" »
В каком месте то появилась ошибка?

Ригадон
17-11-2010, 15:34
Точно также на посте...

LilLoco
17-11-2010, 15:42
Попробуйте для начала не все поля вносить а только одно, и посмотрите на результат!

Ригадон
17-11-2010, 15:54
Form2.Table2.FieldByName('Info').AsString:=Form4.Memo1.Lines.Text;
проблема вот здесь вот... Остальные поля добавляются без проблем...

LilLoco
17-11-2010, 16:14
Поэтому и попросил чтобы вы попробовали не все записи а только одну! А какой тип данных в поле Info ? И почему вносите не Form4.Memo1.Text а Form4.Memo1.Lines.Text ???

Ригадон
17-11-2010, 16:19
Именно просто этот вариант остался вносил и мемо.техт таже ошибка....
просто в данный момент именно эта строка в коде :)
ПС Мемо.текст таже фича...
В это поле не вносится ничего почемуто...
поле в таблице крайнее правое... длинна 255 тип как и все предыдущие текстовый...

LilLoco
17-11-2010, 16:22
А какой тип данных в поле Info в таблице? »

Ригадон
17-11-2010, 16:26
Character такой же как и в предыдущих полях единственное что его длинна 255 символов тоесть максимум...
Жесть поставил длинну 254 и все пошло...

LilLoco
17-11-2010, 18:41
То есть теперь все работает?

opel431
17-11-2010, 19:00
Жесть поставил длинну 254 и все пошло... »
А для memo запись в строку возможно вглядит так 0 - 254 + перевод строки.

Character такой же как и в предыдущих полях единственное что его длинна 255 символов тоесть максимум.. »
Но ведь можно использовать M (Memo) - Все символы кодовой страницы OEM.

Ригадон
18-11-2010, 10:08
Мемо не причем...
Я изменил в структуре таблицы количество символов в поле и все пошло...
:o

opel431
18-11-2010, 12:58
Мемо не причем... »
Не знаю, уважаемый Ригадон.
Просто при копировании из memo всегда последним символом добавляется #13#10, т.е. перевод строки.

Ригадон
18-11-2010, 17:09
Ну это я понимаю но когда я вставляю например в поле из 255 знаком допустим "123456789" из мемо и добавляется #13#10 ну это никак не катит на то чтобы была такая ошибка... :)
Так что это не причем переполнение поля не происходило...




© OSzone.net 2001-2012