Форум: "Базы";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
Внизприем записей Найти похожие ветки
← →
rosl (2003-10-23 02:33) [0]Уважаемые мастера!!!
принимаю записи таким образом:
while not Module_baza.Q_in.EOF do
begin
date_in:=Module_baza.Q_in.FieldByName("col001").AsDateTime;
Module_baza.T_baza.Insert;
Module_baza.T_baza.FieldByName("name").AsString:=Module_baza.Q_in.FieldByName("name").AsString;
Module_baza.T_baza.FieldByName("cod").AsString:=Module_baza.Q_in.FieldByName("col010").AsString;
Module_baza.T_baza.FieldByName("inn").AsString:=Module_baza.Q_in.FieldByName("col005").AsString;
Module_baza.T_baza.FieldByName("summa").AsString:=Module_baza.Q_in.FieldByName("col009").AsString;
Module_baza.T_baza.FieldByName("procent").AsString:=Module_baza.Q_in.FieldByName("col009 _ 100 _ percent").AsString;
Module_baza.T_baza.FieldByName("nom_plat").AsString:=Module_baza.Q_in.FieldByName("col004").AsString;
Module_baza.T_baza.FieldByName("cod").AsString:=Module_baza.Q_in.FieldByName("code_inc").AsString;
Module_baza.T_baza.FieldByName("data_plat").AsDateTime:=Module_baza.Q_in.FieldByName("col001").AsDateTime;
Module_baza.T_baza.FieldByName("data_in").AsDateTime:=date_in;
end;
Module_baza.Q_in.Close;
Module_baza.T_baza.Post;
Module_baza.T_baza.FlushBuffers;
но после того как в базе кол-во записей превышаеи 30000, выдаётся сообщение
"c:\baza\baza.dbf read faluire", в чём дело?
← →
Evgeny V (2003-10-23 05:52) [1]В цикле while not Module_baza.Q_in.EOF do и т.д. искал но не нашел Module_baza.Q_in.Next, как ты по базе то двигаешься, как из цыкла вывалиывешься ? Цикл бесконечный получается, если записи есть.
← →
rosl (2003-10-23 07:54) [2]нет всё нормально, просто код очень большой (с проверкой дат), цыкл не бесконечный. просто после того как в базе оказывается больше 30000 записей , прога при приёме начинает глючить, хотя принимаю порциями по 13000 записей
← →
sniknik (2003-10-23 08:43) [3]какое волшебное число 30000 оказывается. ;о)
rosl (23.10.03 07:54) [2]
> нет всё нормально
если нормально то и ошибки не должно быть,
если ошибку выдает то значит чегото да не так, может действительно таблица порушена, та которая baza.dbf, а может даты неправильные записаны не может преобразовать вот и выдает (комонент левый к примеру, и у него все ошибки подымают такое исключений), а может просто места на диске не хватает.
в общем чегото не так, надо искать, а приведенный код нормальный (с дополнением что Next всетаки есть, хотя здесь его нет (не верь глазам своим ;о)), у меня в dBase перекидывается (примерно также) по 130 000 записей одномоментно и ничего не глючит, правда я немного не так пишу
первое данный код перенес бы в дата модуль а тут вызывал только процедуру соответствующую
второе вместо Insert Append (для dBase это одно и тоже но так в самом коде ясно что происходит)
третье FieldByName убрал бы из цикла, перед циклом сделал бы присвоение переменным TField дальше обрашения к ним (быстрее).
четвертое ессли бы пользовался BDE то вообще все убрал и заменил бы на BatchMove.
пятое и самое главное при описании проблемы на форуме (раз уж не смог сам решить), описывал бы ее подробно с указанием компонент способа доступа точного типа файлов (dBase и FoxPro это всетаки не одно и тоже), и какому компоненту какая таблица соответствует...
p.s. по моему уже видел этот же вопрос, давно с неделю назад, похожий или тот же?
← →
DenK_vrtz (2003-10-23 08:59) [4]sniknik ©, я тоже этот вопрос видел, сам лично про BatchMove говорил :)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.041 c