Вниз
Скачать: CL | DM;

прием записей   Найти похожие ветки 

← →
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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.023 c
14-42117
Vlad Oshin
2003-10-24 14:45
2003.11.13
Не кажется ли Вам, что Достоевский доказал вину...


1-41449
gestern
2003-10-29 12:15
2003.11.13
db


3-40797
Tornado
2003-10-22 15:08
2003.11.13
Проверка наличия таблицы


1-41452
Dim!S
2003-10-29 11:29
2003.11.13
Цветной фон в TEdit


14-42059
Uriel
2003-10-17 15:59
2003.11.13
Помогите придумать тему диплома (сетевое программирование)




   Наверх