Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-07-2004
mainau mainau is offline
Miembro
 
Registrado: mar 2004
Ubicación: Sevilla
Posts: 45
Poder: 0
mainau Va por buen camino
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


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;
__________________
Porque las estirpes condenadas a cien años de soledad nunca tendran una segunda oportunidad sobre la tierra.

Gabriel Garcia Marquez (Cien años de Soledad).
Responder Con Cita
  #2  
Antiguo 14-07-2004
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
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.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 15-07-2004
mainau mainau is offline
Miembro
 
Registrado: mar 2004
Ubicación: Sevilla
Posts: 45
Poder: 0
mainau Va por buen camino
Question ';' 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.-
__________________
Porque las estirpes condenadas a cien años de soledad nunca tendran una segunda oportunidad sobre la tierra.

Gabriel Garcia Marquez (Cien años de Soledad).
Responder Con Cita
  #4  
Antiguo 15-07-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Si al menos publicaras el código indentado... (con la etiqueta delphi, o code)
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #5  
Antiguo 16-07-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
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 ??

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.

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

Última edición por Lepe fecha: 16-07-2004 a las 12:55:00.
Responder Con Cita
  #6  
Antiguo 16-07-2004
mainau mainau is offline
Miembro
 
Registrado: mar 2004
Ubicación: Sevilla
Posts: 45
Poder: 0
mainau Va por buen camino
Wink 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 .
__________________
Porque las estirpes condenadas a cien años de soledad nunca tendran una segunda oportunidad sobre la tierra.

Gabriel Garcia Marquez (Cien años de Soledad).
Responder Con Cita
  #7  
Antiguo 16-07-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Otra vez pegando codigo sin las etiquetas delphi..... ahora si que me niego a leer el codigo . Si te funciona, me alegro

Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 21:40:10.


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
Copyright 1996-2007 Club Delphi