Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Datos especificos en dblookupcombobox (https://www.clubdelphi.com/foros/showthread.php?t=83515)

jonydread 26-06-2013 06:11:51

Datos especificos en dblookupcombobox
 
Estimados, les cuento mi problemilla tengo un dblookupcombobox el cual lo lleno de la sgte manera con un zquery y un datasource, usando sqlite
en zquery object inspector> SQL
Código Delphi [-]
SELECT * FROM Sierras where numero not in(SELECT Sierras FROM Sierras join Asignados on sierras=numero)
lo que hacer es restar los numeros ya utilizados buscando en tabla asignados

hago la sgte consulta en sql y funciona de lujo, es para utilizar un valor de los restados
Código Delphi [-]
SELECT * FROM Sierras where numero not in(SELECT Sierras FROM Sierras join Asignados on sierras=numero)
union all
SELECT * FROM Sierras where numero = '3'

tengo un form que modifica datos, con la primera consulta busco evitar que aparescan los numeros que ya estan utilizados
pero debe aparecer el que se va a editar, para eso necesito aplicar la 2° consulta que he hecho y me sale access violation, debo estar generando un problema con el datasource?
Código Delphi [-]
procedure TModificarA.FormCreate(Sender: TObject);
begin
Mainform.ZQuery4.close;
Mainform.ZQuery4.SQL.Text := 'SELECT * FROM Sierras where numero not in(SELECT Sierras FROM Sierras join Asignados on sierras=numero)';
Mainform.ZQuery4.SQL.Text := 'union all';
Mainform.ZQuery4.SQL.Text := 'SELECT * FROM Sierras where numero = :numero ';
Mainform.zQuery4.parambyname('numero').AsString := Mainform.ListView2.Selected.SubItems[0];
Mainform.ZQuery4.Open;
DatetimePicker1.DateTime := StrToDate(Mainform.ListView2.Selected.Caption);
dblookupcombobox1.Keyvalue := Mainform.ListView2.Selected.SubItems[0];
dblookupcombobox2.keyvalue:= Mainform.ListView2.Selected.SubItems[1];
end;


Ayuda!!!! :eek:

Saludos!

ecfisa 26-06-2013 08:45:05

Hola jonydread.

Por el tipo de error, proba agregando estas dos líneas:
Código Delphi [-]
procedure TModificarA.FormCreate(Sender: TObject);
begin
  
  if not Assigned(Mainform.ListView2.Selected) then
      raise Exception.Create('Algo no anda bién con ListView2...');
  
  Mainform.ZQuery4.close; 
  Mainform.ZQuery4.SQL.Text := 'SELECT * FROM Sierras where numero not in(SELECT Sierras FROM Sierras join Asignados on sierras=numero)';
  Mainform.ZQuery4.SQL.Text := 'union all';
  Mainform.ZQuery4.SQL.Text := 'SELECT * FROM Sierras where numero = :numero ';
  Mainform.zQuery4.parambyname('numero').AsString := Mainform.ListView2.Selected.SubItems[0];
  Mainform.ZQuery4.Open;
  DatetimePicker1.DateTime := StrToDate(Mainform.ListView2.Selected.Caption);
  dblookupcombobox1.Keyvalue := Mainform.ListView2.Selected.SubItems[0];
  dblookupcombobox2.keyvalue:= Mainform.ListView2.Selected.SubItems[1];
end;

Saludos. :)

jonydread 27-06-2013 03:40:19

Funciona al fin muchas gracias quedo de este modo ya que sql.text por separado solo cargaba el ultimo
Código Delphi [-]
procedure TModificarA.FormCreate(Sender: TObject);
begin
  if not Assigned(Mainform.ListView2.Selected) then
      raise Exception.Create('Algo no anda bién con ListView2...');
Mainform.ZQuery4.close;
Mainform.ZQuery4.SQL.Text := 'SELECT * FROM Sierras where numero not in(SELECT Sierras FROM Sierras join Asignados on sierras=numero) union all SELECT * FROM Sierras where numero = :numero ';
Mainform.zQuery4.parambyname('numero').AsString := Mainform.ListView2.Selected.SubItems[0];
Mainform.ZQuery4.Open;
DatetimePicker1.DateTime := StrToDate(Mainform.ListView2.Selected.Caption);
dblookupcombobox1.Keyvalue := Mainform.ListView2.Selected.SubItems[0];
dblookupcombobox2.keyvalue:= Mainform.ListView2.Selected.SubItems[1];
end;

Saludos!!^\||/

ecfisa 27-06-2013 03:55:05

Hola jonydread.

En realidad las líneas eran para marcar la posible procedencia del error, mejor quedaría:
Código Delphi [-]
procedure TModificarA.FormCreate(Sender: TObject);
begin
  if Assigned(Mainform.ListView2.Selected) then
  begin
    Mainform.ZQuery4.close;
    Mainform.ZQuery4.SQL.Text := 'SELECT * FROM Sierras where numero not in(SELECT Sierras FROM Sierras join Asignados on sierras=numero) union all SELECT * FROM Sierras where numero = :numero ';
    Mainform.zQuery4.parambyname('numero').AsString := Mainform.ListView2.Selected.SubItems[0];
    Mainform.ZQuery4.Open;
    DatetimePicker1.DateTime := StrToDate(Mainform.ListView2.Selected.Caption);
    dblookupcombobox1.Keyvalue := Mainform.ListView2.Selected.SubItems[0];
    dblookupcombobox2.keyvalue:= Mainform.ListView2.Selected.SubItems[1];
  end;
end;

Saludos. :)

jonydread 27-06-2013 06:41:24

ok muchas gracias


La franja horaria es GMT +2. Ahora son las 01:03:31.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi