HIMN
Зарегистрирован: 17.04.2006 Сообщения: 17
|
Добавлено: Пт Апр 21 2006 17:16 Заголовок сообщения: Вопрос по Sql и ADO(база данных ACCESS) |
|
|
Мне нужно заполнить MAC адреса в таблице компов, а у меня после выборки можно записать только MAC только первого компа из выборки. Подскажите где ошибка?
Код вот такой
Код: |
procedure TForm1.Button1Click(Sender: TObject);
var
SR: TSearchRec; // поисковая переменная
FindRes: Integer; // переменная для записи результата поиска
F: TextFile;
S,name: string;
i: integer;
Info: array of string;
begin
// задание условий поиска и начало поиска
FindRes := FindFirst('Date\*.*', faArchive , SR);
while FindRes = 0 do
begin
//проверяем существование конфигурации
QR1.SQL.Clear;
QR1.SQL.Append('SELECT name_cfg FROM KONFIG where name_cfg="'+SR.Name+'";');
QR1.Active:=true;
//если выборка пуста,т.е. нет конфигурации, то добавляем запись
if qr1.Eof then adoconnection1.Execute('insert into konfig(name_cfg) values ("'+SR.Name+'")');
//делаем выборку, чтобы выяснить Id конфигурации
QR1.SQL.Clear;
QR1.SQL.Append('SELECT id_cfg FROM KONFIG where name_cfg="'+SR.Name+'";');
QR1.Active:=true;
{или SELECT computers.id_cfg, KONFIG.id_cfg, konfig.name_cfg FROM KONFIG INNER JOIN computers ON KONFIG.id_cfg=computers.id_cfg;}
//проверяем наличие в таблице компьютеров существование Конфигурации с Id
i:= qr1.FieldValues['id_cfg'];
QR1.SQL.Clear;
QR1.SQL.Append('SELECT id_cfg FROM computers where id_cfg='+inttostr(i)+';');
QR1.Active:=true;
//если номера конфигурации нет добавляем
if qr1.Eof then adoconnection1.Execute('insert into computers(id_cfg) values ('+inttostr(i)+')');
FindRes := FindNext(SR); // продолжение поиска по заданным условиям
end;
FindClose(SR); // закрываем поиск
// выборка имён конфигураии, названия конфигурации из табл конфигураций и ид_конфиг из табл компьютеров
QR1.SQL.Clear;
QR1.SQL.Append('SELECT computers.id_comp,computers.id_cfg, KONFIG.id_cfg, konfig.name_cfg FROM KONFIG INNER JOIN computers ON KONFIG.id_cfg=computers.id_cfg');
QR1.Active:=true;
qr1.First;
if not qr1.Eof then
begin
name:=qr1.FieldValues['name_cfg'];
form1.Caption:=name;
// exit;
AssignFile(F,'date\'+name);
reset(F);
s:='';
//проход по файлу конфигурации
while not eof(f) do
begin
s:='';
readln(F,s); //считываем строку
if pos('MAC_Addr=',s)>0 then
begin
name:=copy(s,(pos('=',s)+1),length(s));
i:=qr1.FieldValues['id_comp'];
//??????????????????????????????????????????????????????????
adoconnection1.Execute('UPDATE computers SET [mac]="'+name+'" where ([id_comp]='+inttostr(i)+')');
end;
end;
qr1.Next;
end;
end; |
|
|