Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
4-44941
maker
2003-05-12 20:54
2003.07.14
Алгоритм LineTo


11-44618
Bomberman
2002-11-04 22:43
2003.07.14
SpinEdit


7-44936
yong
2003-04-29 06:32
2003.07.14
WinExec


3-44563
wild_arg
2003-06-19 13:03
2003.07.14
БД MS Access


14-44866
Sedunov Vitaly
2003-06-27 10:17
2003.07.14
EhLib, RxLib for Delphi 7





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский