Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.14;
Скачать: CL | DM;

Вниз

Вылетает   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.02 c
14-44864
nester
2003-06-26 19:07
2003.07.14
Как можно заменить встроенные ресурсы?


1-44659
Tornado
2003-07-02 13:46
2003.07.14
SELF


3-44570
DevMaster
2003-06-20 12:09
2003.07.14
dxMasterView


3-44569
RNZ
2003-06-20 12:06
2003.07.14
Как упаковать базу mdb (Microsoft Access Database) ?


1-44742
hawkins
2003-07-01 14:27
2003.07.14
не удается из программы изменить размер листа у TQuickRep