PDA

Ver la Versión Completa : validar campos dblookupcombobox


jonydread
16-05-2013, 05:07:45
amigos que estoy asiendo mal al colocar el campo para validar al insertar los datos sale un error pero sin ese campo funciona todo bien
dejo el codigo si alguien me puede hechar una mano.
procedure TMainform.BitBtn2Click(Sender: TObject);
var
cItem: TListItem;
begin
if (dblookupcombobox1.KeyValue < 0) or (dblookupcombobox3.KeyValue < 0) then
MessageDlg('Debe seleccionar todos los datos', mtWarning, [mbOk],0)
else

begin
Zquery1.sql.text := 'insert into AsignadosA values (:Fecha,:Sierras,:Trabajador)';
ZQuery1.ParamByName('Fecha').AsDate := Datetimepicker1.Date;
ZQuery1.ParamByName('Sierras').AsInteger := dblookupcombobox1.KeyValue;
ZQuery1.ParamByName('Trabajador').AsString := dblookupcombobox3.KeyValue;
ZQuery1.ExecSQL;
zQuery1.SQL.Clear;
Zquery1.Close;
zquery1.SQL.Text := 'SELECT * FROM AsignadosA';
zquery1.Open;
Listview2.Clear;
while not zquery1.Eof do
begin
cItem := Listview2.Items.Add;
cItem.Caption := zQuery1.fieldbyname('Fecha').AsString;
cItem.SubItems.Add(zQuery1.fieldbyname('Sierras').AsString);
cItem.SubItems.Add(zQuery1.fieldbyname('Trabajador').AsString);
zquery1.next;
end;
end;
end;

ecfisa
16-05-2013, 07:03:49
amigos que estoy asiendo mal al colocar el campo para validar al insertar los datos sale un error...
Hola jonydread.

¿ Y cuál es textualmente el mensaje de error ?

Saludos. :)

jonydread
17-05-2013, 03:24:28
http://s2.subirimagenes.com/imagen/8440271cap.png

quitando esto mas el begin posterior obviamente, funciona inserta los datos bien alguna idea?
if (dblookupcombobox1.KeyValue < 0) or (dblookupcombobox3.KeyValue < 0) then
MessageDlg('Debe seleccionar todos los datos', mtWarning, [mbOk],0)
else

jonydread
17-05-2013, 04:14:41
lo solucione
si bien la forma comprobaba si no estaba seleccionado el combo pero no era el correcto para utilizar lo cambie por NULL
if (dblookupcombobox1.KeyValue = NULL) or (dblookupcombobox3.KeyValue = NULL) then
MessageDlg('Debe seleccionar todos los datos', mtWarning, [mbOk],0)
else

jonydread
17-05-2013, 06:34:03
con el mismo codigo como puedo evitar duplicar un campo lo estoy asiendo asi pero no me funciona
me dice logic error or missing database
procedure TMainform.BitBtn2Click(Sender: TObject);
var
cItem: TListItem;
begin
if (dblookupcombobox1.KeyValue = NULL) or (dblookupcombobox3.KeyValue = NULL) then
MessageDlg('Debe seleccionar todos los datos', mtWarning, [mbOk],0)
else
begin
Zquery1.Close;
zquery1.SQL.Text := 'SELECT * FROM AsignadosA where Sierras = dblookupcombobox1.KeyValue';
zquery1.Open;
if not zquery1.IsEmpty then
raise exception.Create('Registro Existe')else
begin
Zquery1.Close;
Zquery1.sql.text := 'insert into AsignadosA values (:Fecha,:Sierras,:Operario)';
ZQuery1.ParamByName('Fecha').AsDate := Datetimepicker1.Date;
ZQuery1.ParamByName('Sierras').AsInteger := dblookupcombobox1.KeyValue;
ZQuery1.ParamByName('Operario').AsString := dblookupcombobox3.KeyValue;
ZQuery1.ExecSQL;
zQuery1.SQL.Clear;
Zquery1.Close;
zquery1.SQL.Text := 'SELECT * FROM AsignadosA';
zquery1.Open;
Listview2.Clear;
while not zquery1.Eof do
begin
cItem := Listview2.Items.Add;
cItem.Caption := zQuery1.fieldbyname('Fecha').AsString;
cItem.SubItems.Add(zQuery1.fieldbyname('Sierras').AsString);
cItem.SubItems.Add(zQuery1.fieldbyname('Operario').AsString);
zquery1.next;
end;
dblookupcombobox1.KeyValue := NULL;
dblookupcombobox3.KeyValue := NULL;
end;
end;
end;

jonydread
17-05-2013, 19:30:37
como evitar duplicar un campo lo estoy asiendo asi pero no me funciona
me dice logic error or missing database
procedure TMainform.BitBtn2Click(Sender: TObject);
var
cItem: TListItem;
begin
if (dblookupcombobox1.KeyValue = NULL) or (dblookupcombobox3.KeyValue = NULL) then
MessageDlg('Debe seleccionar todos los datos', mtWarning, [mbOk],0)
else
begin
Zquery1.Close;
zquery1.SQL.Text := 'SELECT * FROM AsignadosA where Sierras = dblookupcombobox1.KeyValue';
zquery1.Open;
if not zquery1.IsEmpty then
raise exception.Create('Registro Existe')else
begin
Zquery1.Close;
Zquery1.sql.text := 'insert into AsignadosA values (:Fecha,:Sierras,:Operario)';
ZQuery1.ParamByName('Fecha').AsDate := Datetimepicker1.Date;
ZQuery1.ParamByName('Sierras').AsInteger := dblookupcombobox1.KeyValue;
ZQuery1.ParamByName('Operario').AsString := dblookupcombobox3.KeyValue;
ZQuery1.ExecSQL;
zQuery1.SQL.Clear;
Zquery1.Close;
zquery1.SQL.Text := 'SELECT * FROM AsignadosA';
zquery1.Open;
Listview2.Clear;
while not zquery1.Eof do
begin
cItem := Listview2.Items.Add;
cItem.Caption := zQuery1.fieldbyname('Fecha').AsString;
cItem.SubItems.Add(zQuery1.fieldbyname('Sierras').AsString);
cItem.SubItems.Add(zQuery1.fieldbyname('Operario').AsString);
zquery1.next;
end;
dblookupcombobox1.KeyValue := NULL;
dblookupcombobox3.KeyValue := NULL;
end;
end;
end;

NOTA: es la continuacion de este hilo http://www.clubdelphi.com/foros/showthread.php?t=83141 lo puse aca porque creo que es donde corresponde la consulta


saludos gracias!

Casimiro Notevi
17-05-2013, 20:00:41
NOTA: es la continuacion de este hilo http://www.clubdelphi.com/foros/showthread.php?t=83141 lo puse aca porque creo que es donde corresponde la consulta

Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php)?, gracias por tu colaboración :)

ecfisa
17-05-2013, 22:50:01
como evitar duplicar un campo lo estoy asiendo asi pero no me funciona
me dice logic error or missing database
...

Hola yonydread.

A primera vista esta línea no funcionaría:

zquery1.SQL.Text := 'SELECT * FROM AsignadosA where Sierras = dblookupcombobox1.KeyValue';


Debería ser algo parecido:

...
zquery1.SQL.Text := 'SELECT * FROM AsignadosA where Sierras = :PVALUE';
zquery1.ParamByName('PVALUE').Value := dblookupcombobox1.KeyValue';
...

Aunque no puedo asegurar si es así exáctamente ya que no uso Zeos.

Saludos.:)

nlsgarcia
18-05-2013, 07:23:19
jonydread,


...logic error or missing database...


Revisa este código:

zquery1.SQL.Text := 'SELECT * FROM AsignadosA where Sierras = ' + QuotedStr(dblookupcombobox1.KeyValue);

Espero sea útil :)

Nelson.

jonydread
19-05-2013, 16:04:12
gracias funciono perfecto tengo un error en esta parte
raise exception.Create('Registro Existe')else
dice algo de raise class exeption
pero en fin la cambie por un messagedlg


saludos

jonydread
19-05-2013, 17:10:27
a continuar con esto como puedo unir campos para ver si existe campo en ambas tablas
por ejemplo en campo1 de tabla1 y campo1 de tabla2 si existe el numero 1
he probado de este modo pero no logro funcionamiento
zquery1.SQL.Text := 'SELECT * FROM AsignadosA inner JOIN AsignadosB on AsignadosA.Sierras=AsignadosB.Sierras where AsignadosA.Sierras = ' + QuotedStr(dblookupcombobox1.KeyValue);
zquery1.Open;

saludos!

ecfisa
19-05-2013, 21:33:45
Hola jonydread.

Recuerda que Preguntas distintas = hilos distintos . (Punto 8 (http://www.clubdelphi.com/foros/guiaestilo.php#preguntas) de la guía de estilo)

Saludos y gracias por tu colaboración :)

jonydread
19-05-2013, 22:11:46
ok gracias!