not in edit mode
not in edit mode
Читаю из текстового файла и пытаюсь добавить новую запись в базу.
procedure ins;
var
f:textfile;
d,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,d17,d18,d19,d20,d21,d22:string;
d23,d24,d25,d26,d27,d28,d29:string;
i,k,j:integer;
begin
assignfile(f,'c:\Program files\1cv77\query.txt');
reset(f);
for j:=1 to 29 do
readln(f,d);
closefile(f);
form1.IBQuery1.SQL.Clear;
form1.IBQuery1.SQL.Add('select * from CARD where uid='+trim(D));
form1.IBQuery1.Active:=true;
form1.DataSource1.DataSet:=form1.IBQuery1;
if form1.IBQuery1.RecordCount > 0 then
begin
logfile(1);
form1.IBQuery1.Active:=false;
end
else
begin
assignfile(f,'c:\Program files\1cv77\query.txt');
reset(f);
readln(f,d);
closefile(f);
form1.IBQuery1.SQL.Clear;
form1.IBQuery1.SQL.Add('select * from CARD where cardnum='+trim(D));
form1.IBQuery1.Active:=true;
if form1.IBQuery1.RecordCount > 0 then
begin
logfile(2);
form1.IBQuery1.Active:=false;
end
else
begin
reset(f);
while not eof(f) do
begin
readln(f,d1);
readln(f,d2);
readln(f,d3);
readln(f,d4);
readln(f,d5);
readln(f,d6);
readln(f,d7);
readln(f,d8);
readln(f,d9);
readln(f,d10);
readln(f,d11);
readln(f,d12);
readln(f,d13);
readln(f,d14);
readln(f,d15);
readln(f,d16);
readln(f,d17);
readln(f,d18);
readln(f,d19);
readln(f,d20);
readln(f,d21);
readln(f,d22);
readln(f,d23);
readln(f,d24);
readln(f,d25);
readln(f,d26);
readln(f,d27);
readln(f,d28);
readln(f,d29);
end;
closefile(f);
form1.IBQuery1.Active:=false;
form1.DataSource1.DataSet:=form1.IBTable1;
form1.DBNavigator1.BtnClick(nbInsert);
val(d1,i,k);
form1.IBTable1CARDNUM.Value:=i;
val(d2,i,k);
form1.IBTable1Acclevel.Value:=i;
val(d3,i,k);
form1.IBTable1Limit.Value:=i;
val(d4,i,k);
form1.IBTable1Issue.Value:=i;
val(d5,i,k);
form1.IBTable1Pin.Value:=i;
form1.IBTable1Name1.Value:=d6;
form1.IBTable1Name2.Value:=d7;
form1.IBTable1Name3.Value:=d8;
val(d9,i,k);
form1.IBTable1IsActive.Value:=i;
val(d10,i,k);
form1.IBTable1APB.Value:=i;
form1.IBTable1Department.Value:=d11;
form1.IBTable1Title.Value:=d12;
//form1.IBTable1Hstart.Value:=StringToDate(d13);
//form1.IBTable1Hend.Value:=StringToDate(d14);
form1.IBTable1Created.Value:=StringToDate(d15);
form1.IBTable1Expires.Value:=StringToDate(d16);
form1.IBTable1Other1.Value:=d17;
form1.IBTable1Other2.Value:=d18;
form1.IBTable1Other3.Value:=d19;
form1.IBTable1Other4.Value:=d20;
form1.IBTable1Other5.Value:=d21;
form1.IBTable1Other6.Value:=d22;
form1.IBTable1Other7.Value:=d23;
form1.IBTable1Other8.Value:=d24;
form1.IBTable1Other9.Value:=d25;
form1.IBTable1Other10.Value:=d26;
val(d27,i,k);
form1.IBTable1WORKMODE.Value:=i;
val(d28,i,k);
form1.IBTable1Maket.Value:=i;
val(d29,i,k);
form1.IBTable1UID.Value:=i;
form1.DBNavigator1.BtnClick(nbPost);
logfile(0);
form1.IBQuery1.Active:=false;
end;
end;
end;
procedure del;
var
del:textfile;
f1,f:string;
begin
assignfile(del,'c:\Program files\1cv77\DelApacs.txt');
reset(del);
readln(del,f);
readln(del,f1);
closefile(del);
form1.IBQuery1.SQL.Clear;
form1.IBQuery1.SQL.Add('select * from CARD where (uid='+trim(f)+') and (cardnum='+trim(f1)+')');
form1.IBQuery1.Active:=true;
form1.DataSource1.DataSet:=form1.IBQuery1;
if form1.IBQuery1.RecordCount > 0 then
begin
form1.IBQuery1.Active:=false;
form1.IBQuery1.SQL.Clear;
form1.IBQuery1.SQL.Add('delete from CARD where uid='+trim(f));
form1.IBQuery1.Active:=true;
logfile(0);
form1.IBQuery1.Active:=false;
end
else
begin
logfile(3);
form1.IBQuery1.Active:=false;
end;
end;
при выполнении процедуры ins выдает not in edit mode
в чем проблем?
procedure ins;
var
f:textfile;
d,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,d17,d18,d19,d20,d21,d22:string;
d23,d24,d25,d26,d27,d28,d29:string;
i,k,j:integer;
begin
assignfile(f,'c:\Program files\1cv77\query.txt');
reset(f);
for j:=1 to 29 do
readln(f,d);
closefile(f);
form1.IBQuery1.SQL.Clear;
form1.IBQuery1.SQL.Add('select * from CARD where uid='+trim(D));
form1.IBQuery1.Active:=true;
form1.DataSource1.DataSet:=form1.IBQuery1;
if form1.IBQuery1.RecordCount > 0 then
begin
logfile(1);
form1.IBQuery1.Active:=false;
end
else
begin
assignfile(f,'c:\Program files\1cv77\query.txt');
reset(f);
readln(f,d);
closefile(f);
form1.IBQuery1.SQL.Clear;
form1.IBQuery1.SQL.Add('select * from CARD where cardnum='+trim(D));
form1.IBQuery1.Active:=true;
if form1.IBQuery1.RecordCount > 0 then
begin
logfile(2);
form1.IBQuery1.Active:=false;
end
else
begin
reset(f);
while not eof(f) do
begin
readln(f,d1);
readln(f,d2);
readln(f,d3);
readln(f,d4);
readln(f,d5);
readln(f,d6);
readln(f,d7);
readln(f,d8);
readln(f,d9);
readln(f,d10);
readln(f,d11);
readln(f,d12);
readln(f,d13);
readln(f,d14);
readln(f,d15);
readln(f,d16);
readln(f,d17);
readln(f,d18);
readln(f,d19);
readln(f,d20);
readln(f,d21);
readln(f,d22);
readln(f,d23);
readln(f,d24);
readln(f,d25);
readln(f,d26);
readln(f,d27);
readln(f,d28);
readln(f,d29);
end;
closefile(f);
form1.IBQuery1.Active:=false;
form1.DataSource1.DataSet:=form1.IBTable1;
form1.DBNavigator1.BtnClick(nbInsert);
val(d1,i,k);
form1.IBTable1CARDNUM.Value:=i;
val(d2,i,k);
form1.IBTable1Acclevel.Value:=i;
val(d3,i,k);
form1.IBTable1Limit.Value:=i;
val(d4,i,k);
form1.IBTable1Issue.Value:=i;
val(d5,i,k);
form1.IBTable1Pin.Value:=i;
form1.IBTable1Name1.Value:=d6;
form1.IBTable1Name2.Value:=d7;
form1.IBTable1Name3.Value:=d8;
val(d9,i,k);
form1.IBTable1IsActive.Value:=i;
val(d10,i,k);
form1.IBTable1APB.Value:=i;
form1.IBTable1Department.Value:=d11;
form1.IBTable1Title.Value:=d12;
//form1.IBTable1Hstart.Value:=StringToDate(d13);
//form1.IBTable1Hend.Value:=StringToDate(d14);
form1.IBTable1Created.Value:=StringToDate(d15);
form1.IBTable1Expires.Value:=StringToDate(d16);
form1.IBTable1Other1.Value:=d17;
form1.IBTable1Other2.Value:=d18;
form1.IBTable1Other3.Value:=d19;
form1.IBTable1Other4.Value:=d20;
form1.IBTable1Other5.Value:=d21;
form1.IBTable1Other6.Value:=d22;
form1.IBTable1Other7.Value:=d23;
form1.IBTable1Other8.Value:=d24;
form1.IBTable1Other9.Value:=d25;
form1.IBTable1Other10.Value:=d26;
val(d27,i,k);
form1.IBTable1WORKMODE.Value:=i;
val(d28,i,k);
form1.IBTable1Maket.Value:=i;
val(d29,i,k);
form1.IBTable1UID.Value:=i;
form1.DBNavigator1.BtnClick(nbPost);
logfile(0);
form1.IBQuery1.Active:=false;
end;
end;
end;
procedure del;
var
del:textfile;
f1,f:string;
begin
assignfile(del,'c:\Program files\1cv77\DelApacs.txt');
reset(del);
readln(del,f);
readln(del,f1);
closefile(del);
form1.IBQuery1.SQL.Clear;
form1.IBQuery1.SQL.Add('select * from CARD where (uid='+trim(f)+') and (cardnum='+trim(f1)+')');
form1.IBQuery1.Active:=true;
form1.DataSource1.DataSet:=form1.IBQuery1;
if form1.IBQuery1.RecordCount > 0 then
begin
form1.IBQuery1.Active:=false;
form1.IBQuery1.SQL.Clear;
form1.IBQuery1.SQL.Add('delete from CARD where uid='+trim(f));
form1.IBQuery1.Active:=true;
logfile(0);
form1.IBQuery1.Active:=false;
end
else
begin
logfile(3);
form1.IBQuery1.Active:=false;
end;
end;
при выполнении процедуры ins выдает not in edit mode
в чем проблем?
Re: not in edit mode
Срочно читать книжки, с самого начала.DenTig писал(а):Active:=true;
да тут код вообще и неформатированный и сам по себе ужасный. особенно где сначала IBQuery1 выбирает записи которые надо удалить, а потом этим же датасетом начинают якобы поштучно записи удалять.
Причем вызывая для delete IBQuery.Active:=True...
читать www.ibase.ru/devinfo/ibx.htm как минимум.
Причем вызывая для delete IBQuery.Active:=True...
читать www.ibase.ru/devinfo/ibx.htm как минимум.
нет, так не пойдет. я бы предложил весь этот код написать заново,теперь ругается can not perform closed dataset
читая книжки и заглядывая в справку.
здесь на форуме процесс отладки таких элементарных вещей излагать не надо.
и еще рекомендую не писать процедуру обработки в коде, а писать обработчик например нажатия на кнопку, чтобы вот этого
form1.a
form1.b
form1.a
form1.b
в коде не было. Или писать with form1 do.
в общем, читать книжки по дельфям для начинающих.