Problema ao executar query

24/02/2010

1

Estou tentando rodar este código, mas dá "access violation" na linha marcada e eu já não tenho mais a menor idéia do que pode ser:

procedure TGera.SpeedButton1Click(Sender: TObject);
begin
  OpenDialog1.Execute;
  Base.Text := OpenDialog1.Files.Text;

  With DM.SQLConnection1 Do
    begin
      ConnectionName := 'Infoplus';
      DriverName := 'Interbase';
      GetDriverFunc := 'getSQLDriverINTERBASE';
      KeepConnection := true;
      LibraryName := {$IFDEF Linux} 'libsqlib.so.1'; {$ELSE} 'dbexpint.dll'; {$ENDIF}
      LoadParamsOnConnect := false;
      LoginPrompt := false;
      Name := 'SQLConnection1';
      VendorLib := {$IFDEF Linux} 'libfbclient.so'; {$ELSE} 'GDS32.DLL'; {$ENDIF} // GDS32.DLL    fbclient.dll
      Params.Clear;
      With Params Do
        begin
          ADD('DriverName=Interbase');
          ADD('BlobSize=-1');
          ADD('CommitRetain=False');
          ADD('Database=' + host.Text + ':' + Base.Text );
          ADD('ErrorResourceFile=');
          ADD('LocaleCode=0000');
          ADD('Password=' + senha.Text);
          ADD('RoleName=RoleName');
          ADD('ServerCharSet=WIN1252');
          ADD('SQLDialect=3');
          ADD('Interbase TransIsolation=ReadCommited');
          ADD('User_Name=' + login.Text);
          ADD('WaitOnLocks=False');
        end;
        Open;
    end;

   if DM.SQLConnection1.Connected = false then
        ShowMessage('Base de dados não conectada!' + #13 + 'Verifique os dados.')
   else
   begin
        DM.Query.Active := false;
        DM.Query.Close;
        DM.Query.SQL.Clear;
        DM.Query.SQL.Add('SELECT RDB$RELATION_NAME FROM RDB$RELATIONS ');
        DM.Query.SQL.Add('WHERE RDB$VIEW_BLR IS NULL ');
        DM.Query.Active := true;
        if not DM.Query.IsEmpty then
        begin
        end;
   end;
end;
Responder

Posts

24/02/2010

Thiago Santana

Ao invés de tentar ativar a Query tente apenas abrir: DM.Query.open; Aproveite e pegue seu código SQL e teste para vê se ele está funcionando corretamente... Fora isso está td normal pelo menos visualmente..
Responder