Avatar billede kennethv Nybegynder
27. oktober 2006 - 15:08 Der er 2 kommentarer og
1 løsning

2 ADOQuerys åben på samme tid?

Jeg har et spørgsmål om man kan man have en ADOQuery1 åben imens man åbner en ADOQuery2 som sletter en record udfra et søgekriterie fra ADOQuery1?

Jeg har fundet ud af, da jeg indlæste min records i et nText felt at jeg havde sorteret listen inden jeg oprettede det ogt det skal det ikke.

procedure TForm1.Button2Click(Sender: TObject);
var I,Y : integer;
tmp : string;
begin
  ADOQuery1.SQL.Text := 'SELECT DISTINCT NAME FROM DATALOG';
  ADOQuery1.Open;
  try
    while not ADOQuery1.Eof do
    begin
      UserList.Add(ADOQuery1.FieldByName('NAME').AsString);
      ADOQuery1.Next;
    end;
  finally
    ADOQuery1.Close;
    try
      Progressbar1.Position := 0;
      ProgressBar1.Max := UserList.Count;
      for I := 0 to UserList.Count - 1 do
      begin
        Label1.Caption := UserList.Strings[I];
        Label1.Refresh;
        ADOQuery1.SQL.Text := 'SELECT FILENAME FROM DATALOG WHERE NAME=' + Quotedstr(UserList.Strings[I]);
        ADOQuery1.Open;
        FileList.Clear;
        while not ADOQuery1.Eof do
        begin
          FileList.Add(ADOQuery1.FieldByName('FILENAME').AsString);
          ADOQuery1.Next;
        end;
        Progressbar2.Position := 0;
        ProgressBar2.Max := FileList.Count;
//        ADOTable1.Active := true;
        for Y := 0 to FileList.Count - 1 do
        begin
          Label2.Caption := FileList.Strings[Y];
          Label2.Refresh;
          ADOQuery1.SQL.Text := 'Select FILEDATA From DATALOG Where FILENAME='+Quotedstr(FileList.Strings[Y]);
          ADOQuery1.Open;
          while not ADOQuery1.Eof do
          begin
//            MemoryStream := (ADOQuery1.CreateBlobStream(ADOQuery1.FieldByName('DATALOG'),bmRead) as TMemoryStream);
            DataList.text := ADOQuery1.FieldByName('FILEDATA').AsString;
            Memo1.Lines.Text := DataList.Text;
            Memo1.WordWrap := true;
            Memo1.Refresh;
            if (POS('ROBOCOPY', Memo1.Lines[2]) = 0) and (POS('Version XP010', memo1.Lines[2]) = 0) then
            begin
              ADOQuery2.Close;
              ADOQuery2.SQL.Text := 'Delete From Datalog where';  // Denne del er ikke færdig, men vil bare høre om mit spørgsmål kan lad sig gøre.
//                  showmessage('Fundet');
//                Delete;
            end;
            ADOQuery1.Next;
          end;
          ProgressBar2.StepIt;
        end;
        ProgressBar1.StepIt;
      end;
    finally
      ADOQuery1.Close;
    end;
  end;
  if MessageDlg('Færdig',mtConfirmation, [mbOK], 0) = mrOk then
  begin
    Close;
  end;
end;
Avatar billede martinlind Nybegynder
27. oktober 2006 - 15:37 #1
det skulle der ikke være noget problem i, du skal så bare bruge ADO2.Execute; eller hvad den nu hedder, da en delete IKKE retuner et result-set lige som Open gør :)
Avatar billede kennethv Nybegynder
27. oktober 2006 - 16:13 #2
Ja, det spiller jo fint. Læg et svar. :)
Avatar billede martinlind Nybegynder
27. oktober 2006 - 19:12 #3
gerne :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester