Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   estructura erronea pero no se donde (https://www.clubdelphi.com/foros/showthread.php?t=12388)

mainau 14-07-2004 21:38:46

estructura erronea pero no se donde
 
Buenas tardes, os muestro una estructura que me trae loco no se donde esta el fallo , bueno si si quito el ultimo else funciona pero tambien me da el mensaje y es mentira agradeceré cualquier mensaje aunque sea de apoyo estoy muerto con esto:mad:


procedure TForm6.Button2Click(Sender: TObject);
var sumador:integer;
var fecha1:tdatetime;
var fecha2:tdatetime;
begin
// compruebo si lo quiere entre fechas o todo
if not checkbox2.Checked then
edit2.text:=form19.ADOTable1pendiente.AsString
else
// si lo quiere entre fechas comprueba primero que existen registros
//form5.ADOTable1.IndexName:='codigo';
if form5.ADOTable1.Locate('codigo', form19.ADOTable1codigo.AsInteger,[]) then
edit3.Text:='@';
while not form5.ADOTable1.eof do
begin
edit3.Text:=form5.ADOTable1ADELANTO.AsString;
form5.ADOTable1.Next;
end

else messagedlg('No existen registros de ese empleado', mtinformation, [mbok],0);


end;

marcoszorrilla 14-07-2004 22:26:18

Código Delphi [-]
while not form5.ADOTable1.eof do
begin
edit3.Text:=form5.ADOTable1ADELANTO.AsString;
form5.ADOTable1.Next;
end;

De momento faltaría ese punto y coma, pero no he seguido analizando algún fallo más que pueda haber, porque creo que lo correcto sería montar una simple consulta SQL.

Un Saludo.

mainau 15-07-2004 10:15:18

';' not allowed before 'ELSE'
 
Exacto, yo lo habia puesto pero si lo coloco me da el error que ves en el titulo y si no lo pongo 'END' expected but 'ELSE' found este asi que sigo en un mar de dudas ya que no veo , estaré embotado la solución.

sobre la consulta sql es lo primero que hice pero me daba errores (ya puse un hilo en bd ) y me comentaron muy amablemente que deberia usar decodedatetime pero no se usarlo y en ningun libro de los que tengo describe su uso la cadena sql la tenia creada hace tiempo de otra aplicación y en la otra funcionaba muy bien. gracias por tu interres.-

jachguate 15-07-2004 16:38:18

Si al menos publicaras el código indentado... (con la etiqueta delphi, o code)

Lepe 16-07-2004 12:48:48

Cita:

Empezado por mainau
Código Delphi [-]
procedure TForm6.Button2Click(Sender: TObject);
var sumador:integer;
var fecha1:tdatetime;
var fecha2:tdatetime;
begin
// compruebo si lo quiere entre fechas o todo
        if not  checkbox2.Checked then
                edit2.text:=form19.ADOTable1pendiente.AsString
        else
// si lo quiere entre fechas comprueba primero que existen registros
//form5.ADOTable1.IndexName:='codigo';
            if form5.ADOTable1.Locate('codigo', form19.ADOTable1codigo.AsInteger,[])  then
begin
             edit3.Text:='@';
             while not form5.ADOTable1.eof do
              begin
                  edit3.Text:=form5.ADOTable1ADELANTO.AsString;
                  form5.ADOTable1.Next;
               end
end
    else   messagedlg('No existen registros de ese empleado', mtinformation, [mbok],0);
 

end;

el problema es que el ultimo else no se corresponde con ningun IF, se corresponde con el while begin end, o sea, que no va ahí ni por pelos.

Date cuenta en en todos los if que tienes en el código no tienes ningun begin y end... por tanto solo afecta a la linea siguiente.

lo que falta es el begin y el end que estan justificados a la izquierda

Ves como el código entre [ delphi ] codigo fuente aqui [ / delphi ] (sin los espacios)se vé mas clarito ?? :p :p :p

Por otra parte no veo sentido al bucle, o sea, en el edit3 pones el "Adelanto", pero a la siguiente vuelta del bucle while, lo machacas y pone lo uqe haya en el siguiente registro.... TOTAL. En el Edit3 solo habrá lo que tenga "Adelanto" en el ultimo registro de la tabla.

Otro detalle es que no pones un form5.ADOTable1.First para que empiece a buscar desde el principio de la tabla, sino que empieza a buscar desde el registro en curso (desde el locate)... no sé si realmente es lo que quieres. :confused:

Ya nos contarás que es lo que quieres hacer.

mainau 16-07-2004 13:12:05

solucionado , gracias a vosotros ...
 
A lo mejor algun día aprendo y todo, exactamente el problema era que el else estaba ahi colgadito al final lo he dejado asi y funciona :
begin
// compruebo si lo quiere entre fechas o todo
if not checkbox2.Checked then
edit2.text:=form19.ADOTable1pendiente.AsString
else
// datasource2.DataSet.Refresh;
begin
button3.Visible:=true;
form5.DataSource2.DataSet.Filtered:=false;
form5.DataSource2.DataSet.Filter := 'codigo = '+QuotedStr (form19.adotable1codigo.value) + 'and fecha >=' + quotedstr(datetostr(datetimepicker1.Date)) + ' and fecha <=' + quotedstr(datetostr(datetimepicker2.Date)) ;
form5.DataSource2.DataSet.Filtered:=true;
dbgrid1.Refresh;
form5.adotable1.First;
sumador:= 0;
while not form5.adotable1.Eof do
begin
sumador:= sumador + form5.ADOTable1IMPORTE.AsInteger - form5.ADOTable1ADELANTO.AsInteger;
form5.datasource2.DataSet.Next;
end;
edit2.text:=inttostr(sumador);
qrlabel8.Caption:=edit2.Text;
qrlabel9.Caption:=edit2.Text;
Qrlabel11.Caption:=datetostr(datetimepicker1.Date);
Qrlabel12.Caption:=datetostr(datetimepicker2.Date);
Qrlabel16.Caption:=datetostr(datetimepicker1.Date);
qrlabel18.Caption:=datetostr(datetimepicker2.Date);
end;
end;
los qrlabel son para el informe impreso
prometo mejorar el tema indentado , gracias a todos por vuestro interés y amabilidad al contestar y preocuparos .

Lepe 16-07-2004 13:31:12

Otra vez pegando codigo sin las etiquetas delphi..... ahora si que me niego a leer el codigo :p :p. Si te funciona, me alegro :p

:D:D


La franja horaria es GMT +2. Ahora son las 09:31:41.

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