Форум: "Базы";
Текущий архив: 2003.07.14;
Скачать: [xml.tar.bz2];
ВнизВылетает Найти похожие ветки
← →
div (2003-06-19 13:55) [0]Здравствуйте. Имеется база Рaradox, вызываю Edit, потом пытаюсь записать - ругается "dataset not in edit or insert mode"
with DataModule1.Chet do begin
if not CanModify then
begin
ShowMessage("Редактирование запрещено");
FormWork.Bit_D.Visible:=False;
end
else
begin
s:=StrToFloat(Edit3.Text);
Edit; // перевожу в режим редактирования
if State in [dsEdit, dsInsert] then ShowMessage("Испавлять можно!!");
// Специально вставил, сообщение выдается, т.е вроде все в норме, но после строки
FieldByName("SUM_N").asFloat:=S;
// и выскакивает ошибка
// dataset not in edit or insert mode
FieldByName("SUM_V").AsFloat:=FieldByName("Ost_v").AsFloat+s;
Post;
FlushBuffers;
end;
end;
Т.е. судя по всем проверкам все должно быть в норме.
В других программах такого нет. Помогите, совсем запутался.
← →
Соловьев (2003-06-19 13:59) [1]
> редактирования
> if State in [dsEdit, dsInsert] then ShowMessage("Испавлять
> можно!!");
> // Специально вставил, сообщение выдается, т.е вроде
> все в норме, но после строки
> FieldByName("SUM_N").asFloat:=S;
> // и выскакивает ошибка
> //dataset not in edit or insert mode
> FieldByName("SUM_V").AsFloat:=FieldByName("Ost_v").AsFloat+s;
> Post;
> FlushBuffers;
> end;
а где begin после then
← →
div (2003-06-19 14:25) [2]а зачем,
if State in [dsEdit, dsInsert] then ShowMessage("Испавлять
> можно!!");
я это просто вставил, чтобы себя проверить
← →
Соловьев (2003-06-19 14:39) [3]убери тогда эту строчку:
if State in [dsEdit, dsInsert] then ShowMessage("Испавлять
> можно!!");
← →
div (2003-06-19 14:44) [4]Так у меня ее раньше и не было. Это потом, чтобы удостовериться.
← →
Max Zyuzin (2003-06-19 14:47) [5]>div © (19.06.03 13:55)
А что у нас из себя представляет DataModule1.Chet ? TQuery или TTable
← →
DevMaster (2003-06-19 14:48) [6]1. Одна из причин(возможно)
Обрати внимание на запись!!! Есть ли запись хоть одна в базе???!!! если нет то нужно писать Insert
if Table1.CountRec > 0 then ~чтото в этом роде
Edit else Insert(Append)
← →
div (2003-06-19 14:52) [7]Это TTable, в ней > 140 тыс. строк
← →
Соловьев (2003-06-19 14:56) [8]
> Это TTable, в ней > 140 тыс. строк
мда.... а зачем же столько?
а активна хоть? Active=true?
← →
div (2003-06-19 15:03) [9]Это список неподвижный счетов с остатками, пополняться не должен, но возможно полное списание остатка. Т.е. изменение нескольких полей записи. Active=true. Я до этого делаю поиск с фильтром, потом формочку с данными, прошу подтвердить списание, а уже затем пытаюсь записать ...
← →
DevMaster (2003-06-19 15:06) [10]
максимальный размер таблицы по умолчанию от 128Мб до 4Гб, в зависимости от установки BLOCKSIZE в IDAPI.CFG во время создания таблицы. (максимальный размер = BLOCKSIZE x 64Mb)
Посмотри тут
http://www.delphikingdom.ru/asp/answer.asp?IDAnswer=3070
← →
Sandman25 (2003-06-19 15:09) [11]Поле SUM_N не установлено в readonly?
← →
div (2003-06-19 15:11) [12]Ну сама Chet.db сейчас чуть больше 32 Мб
← →
DevMaster (2003-06-19 15:16) [13]Да..... так годать..... скинь лучше исходник!!!!!!!!!!!!(не весь конечно, а именно инициализацию таблицы, ДатаСоурса :)), и все твои операции с ней!) А то сидим и гадаем! :)))))
← →
div (2003-06-19 15:19) [14]Все поля в норме, readonly:=False. Я пытался и с другим полем, и сразу без установки фильтра ...
← →
DevMaster (2003-06-19 15:22) [15]Проверь свойства файла ??? не ReadOnly ??????????
← →
Жук (2003-06-19 15:23) [16]Поставьте брекпоинт на глючную строчку и посмотрите какой там State. Есть вероятность, что где-то что-то произошло и вы имеете dsBrowse.
← →
sniknik (2003-06-19 15:26) [17]а попробуй так, на всякий случай
DataModule1.Chet.Edit;
DataModule1.Chet.FieldByName("SUM_N").asFloat:=S;
← →
div (2003-06-19 15:38) [18]У файлов только атрибут архивный. полностью указывать
dataModule1.Chet я тоже пробовал
← →
DevMaster (2003-06-19 15:40) [19]попробу через SQLExplorer добавить запись!!!
если невозможно то в самой таблице нет доступа!!!
← →
Семен Сорокин (2003-06-19 15:43) [20]div © (19.06.03 15:38)
1. проверь события на OnBeforeEdit или подобные твоей таблы,
2. может есть события на OnUpdate/OnChange самого поля SUM_N, которые снимают edit.
3. Поле sum_n - реальное или calculated?
4. имеет ли табла Chet MasterDetail связь?
← →
sniknik (2003-06-19 15:47) [21]еще посмотри, раз это парадокс, на размер файла. 64мг первый 128мг второй (default) "кризис" парадоксных файлов. (может он у тебя уже "переполнился"?)
← →
DevMaster (2003-06-19 15:53) [22]Цитирую:
Данная общая информация могла бы быть полезной при вычислении максимального размера записи для установки размера каждого блока.
Требования к предельным размерам типов полей таблицы Paradox
Данный список указывает количество байт каждого типа поля таблицы Paradox, занимаемое в структуре записи. Имейте в виду, что указанный размер занимает каждое поля в самом файле .DB, не во вспомогательных файлах типа .MB.
Тип данных Байт
-----------------------------------------------------------
Alphanumeric 1 байт на символ, до 255
AutoIncrement 4 байта
Binary (BLOB) 10 байт + 1 на символ. В пределе
(0 - 240) [1]
Bytes 1 на символ, максимально до 255.
BCD 17
Currency (Денежный) 8
Date 4
Formatted Memo 10 байт + 1 на символ. В пределе
(0 - 240)
Graphic 10 байт + 1 на символ. В пределе
(0 - 240)
Memo 10 байт + 1 на символ. В пределе
(1 - 240) [2]
Logical 1
LongInt 4
Numeric (Числовой) 8
OLE 10 байт + 1 на символ. В пределе
(0 - 240)
SmallInt 2
Time 4
TimeStamp 8
Пределы:
Maximum Field Count : 255 полей
(максимальное количество
полей)
Maximum Blocks per table : 64К
(максимальное количество
блоков в таблице)
Maximum Block Size : 32К символов
(максимальный размер
блока)
Max Record Size, unkeyed : Текущий размер блока - 6 байта [3]
(максимальный размер
записи, неключевой)
Max Record Size, keyed : (BlockSize - 6) / 3, округляется в меньшую сторону
(максимальный размер до ближайшего размера блока. [4]
записи, ключевой)
Сноски:
[1] Все blob-поля содержат 10-байтовые указатели на .MB-файл, которые указывают где могут быть найдены "остальные" значения поля.
[2] В отличие от данных "blob"-типа, Memo-поле требует по крайней мере один "Memo"-символ, сохраненный в .DB-файле, для обеспечения совместимости с Paradox for DOS.
[3] Размер блока по умолчанию хранится в IDAPI.CFG. Для изменения значения по умолчанию, запустите Configuration Utility и измените установку Tables, Paradox, Block Size. Значение по умолчанию 2048 и может изменяться в диапазоне от 1024 до 32К. 6 байтов в данном значении резервируются для внутренних указателей.
[4] Это следствие наличия значений ключа записей Paradox, которые передаются в .PX файл, очень похожий на табличный файл. Размер ключа не может превышать 1/3 размера блока таблицы; в противном случае Paradox будет пытаться увеличить размер блока. При выполнении вычислений не забывайте брать в расчет 6-байтные указатели.
← →
div (2003-06-19 15:56) [23]Sum_N - реальное
Связь имеет, но совсем не по изменяемым полям. Связанные тавлицы в этот момент в режиме Active.
Через SQLExplorer и Database Desktop правятся нормально
← →
sniknik (2003-06-19 16:04) [24]> Связь имеет, но совсем не по изменяемым полям.
отключи на время, наверняка "эффект" пропадет.
← →
div (2003-06-19 16:12) [25]Структура талицы
CHET счета
-------
ID + - идентификатор записи
DEP_ID I - код филиала (для связи =FILIAL.ID FILIAL_NAME)
NLS A14 - номер лицевого счета
DATO D - дата открытия счета
FIO A45 - ФИО владельца
PHH A12 - РНН
DOCUM A40 - удостоверяющий документ
DAPP D - дата последней операции со счетом
OST N - остаток на дату передачи
OST_V N - остаток на начало периода (года)
NLS_ID I - (для связи =NLS_S.ID) номер сборного счета (NLS_)и VALUTA)
DATZ D - дата списания денег
SUM_V N - выплаченная сумма
SUM_P N - сумма доначисленных %
RAZPOR A30 - номер распоряжения
Весь каталог со всеми (6-ю) таблицами занимает чуть меньне 41 Мб
Т.е. до "кризиса" далеко. Я "грешу" на Lookup поля,так как вычисляемых вообще нет
← →
Семен Сорокин (2003-06-19 16:40) [26]а где в структуре поле SUM_N?
← →
div (2003-06-19 16:54) [27]Это я выслал старую структуру, сейчас SUM_P называется SUM_N,
но я пытался первым изменять RAZPOR, все равно та же ошибка.
← →
div (2003-06-19 17:15) [28]Спасобо Snikik,
Удалил все Lookup поля - получилось исправить, но они мне нужны для "показа". Там вроде никакого криминала в их описании не было.
Попробую методом тыка какая из связей мне мешала, благо их всего 3, правда есть поле Валюта которе я вытаскиваю как LOOKUP из таблицы NLS_S, в которой оно LOOKUP из таблици VAL. т.е.
он как бы дважды LOOKUP
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.07.14;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.008 c