Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

invalid parametr при добавлении записи

4.4K
15 декабря 2006 года
frosty
53 / / 24.09.2004
Здравствуйте все.
У меня в программе объявился глюк:
при добавлении записи (как правило при добавлении каждой примерно 8й записи) появляется ошибка invalid parametr а также
some internal limit (see context)
если через делфи запускать, то ошибка выдается на шаге DinQry^.ExecSQL;

вот код:
Код:
function TMyComp.FreeId(DBName: String; Sender: TObject): Word;
Var
DinQry: PTQuery;
TempQuery: TQuery;
NextId: Word;
minId, maxId, I, curId: Word;
begin
New(DinQry);
DinQry^:=TQuery.Create(Self);
DinQry^.SQL.Clear;
NextId:=1;
FreeId:=NextId;
DinQry^.SQL.Add('select min(id) from '+DBName);
DinQry^.Prepare;
if DinQry^.Active then DinQry^.Close;
{$I-}
DinQry^.ExecSQL; // сообщение об ошибк выскакивает на этом шаге
DinQry^.Open;
minId:=DinQry^.Fields[0].AsInteger;
{$I+}
if IOResult=0 then
begin
if NextId = minId then
begin
DinQry^.SQL.Clear;
DinQry^.SQL.Add('select max(id) as maxId from '+DBName);
DinQry^.Prepare;
if DinQry^.Active then DinQry^.Close;
DinQry^.ExecSQL;
DinQry^.Open;
maxId:=DinQry^.Fields[0].AsInteger;
if maxId<>minId then
begin
I:=NextId;
repeat
I:=I+1;
DinQry^.SQL.Clear;
DinQry^.SQL.Add('select id from '+DBName+' where ( id=:curid )');
DinQry^.ParamByName('curid').AsInteger:=I;
DinQry^.Prepare;
{$I-}
DinQry^.ExecSQL;
DinQry^.Open;
curId:=DinQry^.Fields[0].AsInteger;
{$I+}
if (IOResult<>0) or (DinQry^.Fields[0].AsInteger=0) then
begin
FreeId:=I;
break;
end;
until i>=maxId;
if I=maxId then FreeId:=I+1;
end
else FreeId:=maxId+1;
end;
end;
if DinQry^.Active then DinQry^.Close;
DinQry^.UnPrepare;
FreeMem(DinQry);
end;


есть у кого какие предложения?

[COLOR=red]пользуйся тэгами code.[/COLOR]
4.4K
18 декабря 2006 года
frosty
53 / / 24.09.2004
Ну проблему я решила...странно, что никто не ответил...как оказалось, ошибка была в незакрытом запросе, кот. стоял в цикле, что вызывало переполнение памяти..это если кому интересно.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог