Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-12-2006
silviodp silviodp is offline
Miembro
 
Registrado: may 2003
Ubicación: General Levalle, Argentina
Posts: 277
Poder: 22
silviodp Va por buen camino
No corre

Hola a todos, alguien puede ver este codigo y decirme como solucionarlo para que se ejecute ya que me da error en el ELSE //(4), y puedo hacerlo andar.
Código:
procedure TForm14.DBEdit2KeyPress(Sender: TObject; var Key: Char);
Var
 n,m:Variant;
begin //(1)
If Key=#13 Then
 begin //(2)
  ModuloDatos.TblComprobantes.Active:=True;
  If ModuloDatos.TblComprobantes.Locate('Numero',TxtNumero.Text,[]) Then
   begin //(3)
    If ModuloDatos.TblComprobantes.FieldValues['Estado']<>'P' Then
     begin //(4)
       m:=ModuloDatos.TblComprobantes.FieldValues['Cod_soc'];
       If ModuloDatos.TblSocios.Locate('Cod_soc',m,[]) Then
        begin
         TxtSocio.Text:=m;
       end;
       n:=ModuloDatos.TblComprobantes.FieldValues['Cod_periodo'];
       If ModuloDatos.TblPeriodos.Locate('Cod_periodo',n,[]) Then
        begin
         TxtPeriodo.Text:=n;
       end;
       TxtImporte.Text:=ModuloDatos.TblComprobantes.FieldValues['Importe'];
       Confirmar.SetFocus
     Else //(4)
      begin
       ShowMessage('La factura Nº'+' '+TxtNumero.Text+' '+'ya fue cobrada!!!');
       (Sender as TDBEdit).SelectAll;
      end
   Else //(3)
    begin
     ShowMessage('Factura no encontrada. Verifique el Número de la misma.');
     (Sender as TDBEdit).SelectAll;
    end; //(3)
 end; //(1)
end;
Muchas gracias, saludos.

Silvio.-
Responder Con Cita
  #2  
Antiguo 11-12-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.289
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por silviodp
...ya que me da error en el ELSE //(4)
¿Y qué error te da?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 11-12-2006
Avatar de rcarrillom
[rcarrillom] rcarrillom is offline
Miembro Premium
 
Registrado: dic 2004
Ubicación: UK / North Sea / Norway / Golfo de México / Frente a mi Laptop
Posts: 219
Poder: 20
rcarrillom Va por buen camino
A primera vista a riego de equivocame, antes del Else //4,falta el end que cierra al begin //4
__________________
eLcHiCoTeMiDo - Rompecorazones profesional
Yo no soy presumido; ¿Pero de qué sirve mi humilde opinión contra la de los espejos?
Salva a un nylon, usa prendas de piel de foca
Responder Con Cita
  #4  
Antiguo 11-12-2006
silviodp silviodp is offline
Miembro
 
Registrado: may 2003
Ubicación: General Levalle, Argentina
Posts: 277
Poder: 22
silviodp Va por buen camino
No corre

Uno de los errores que da es mas o menos: "END expected but ELSE", pero si le pongo el END como sugirio rcarrillom, me da otro error ya probe agregando END en todas partes y no hay forma que funcione...
Responder Con Cita
  #5  
Antiguo 11-12-2006
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Poder: 22
Bicho Va por buen camino
Hola, parece que está claro,

Cuenta los BEGIN que hay en la función (8) y los END que has puesto (6), te faltan 2.
Prueba a indentar el código para meter los bloques begin-end unos dentro de otros para poder separarlos y tenerlos más claro visiblemente y no te ocurrirá este tipo de errores, que por otra parte es muy común en tipo de código como el que has puesto, con multitud de condiciones.

Ej:
Código Delphi [-]
If ModuloDatos.TblComprobantes.FieldValues['Estado']<>'P' Then
begin //(4)
     m:=ModuloDatos.TblComprobantes.FieldValues['Cod_soc'];
     If ModuloDatos.TblSocios.Locate('Cod_soc',m,[]) Then
     begin
          TxtSocio.Text:=m;
     end;
     n:=ModuloDatos.TblComprobantes.FieldValues['Cod_periodo'];
     If ModuloDatos.TblPeriodos.Locate('Cod_periodo',n,[]) Then
     begin
          TxtPeriodo.Text:=n;
     end;
     TxtImporte.Text:=ModuloDatos.TblComprobantes.FieldValues['Importe'];
     Confirmar.SetFocus;
end;

Espero te sirva.

Saludos
Responder Con Cita
  #6  
Antiguo 11-12-2006
Avatar de kuan-yiu
[kuan-yiu] kuan-yiu is offline
Miembro Premium
 
Registrado: jun 2006
Ubicación: Galicia. España.
Posts: 1.017
Poder: 19
kuan-yiu Va camino a la fama
Te faltan 2 "end", creo que uno antes de cada "else".
Responder Con Cita
  #7  
Antiguo 11-12-2006
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Cita:
Empezado por Neftali
Cita:
Empezado por silviodp
...ya que me da error en el ELSE //(4)
¿Y qué error te da?
Que haya que preguntar esto a un principiante ya es molesto, ¡pero a alguien que ya lleva 200 mensajes en este foro!

Lo siento, pero es que me saca de quicio .
Responder Con Cita
  #8  
Antiguo 11-12-2006
silviodp silviodp is offline
Miembro
 
Registrado: may 2003
Ubicación: General Levalle, Argentina
Posts: 277
Poder: 22
silviodp Va por buen camino
No corre

Bueno a mi tambien me sacaste de quicio la verdad!!!!, si pregunto es porque probe un monton de formas y no funciona, no me queda otra alternativa, de ultima el foro es para que nos ayudemos, sino tenes ganas ni siquiera contestes..., quien te crees que sos????????, no sabia que Bill Gate se hacia llamar Ñuño Martinez...
Responder Con Cita
  #9  
Antiguo 11-12-2006
silviodp silviodp is offline
Miembro
 
Registrado: may 2003
Ubicación: General Levalle, Argentina
Posts: 277
Poder: 22
silviodp Va por buen camino
No corre

Solo queria que vieran el codigo ya que por ahi ven errores en el mismo que no me doy cuenta..., nada mas que eso, igual, gracias.
Responder Con Cita
  #10  
Antiguo 11-12-2006
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Poder: 22
Bicho Va por buen camino
Jod... comó está la peña últimamente, es que no se puede decir nada a nadie.
Vamos hombre, que estamos en Navidad (casi casi),

Felices fiestas a todos,

Un abrazo
Responder Con Cita
  #11  
Antiguo 11-12-2006
silviodp silviodp is offline
Miembro
 
Registrado: may 2003
Ubicación: General Levalle, Argentina
Posts: 277
Poder: 22
silviodp Va por buen camino
No corre

La verdad que ultimamente hay bastante mala onda en el foro!!!!!
Responder Con Cita
  #12  
Antiguo 11-12-2006
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.055
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por silviodp
La verdad que ultimamente hay bastante mala onda en el foro!!!!!
¿en qué lo notaste?
¿verdad que algunos no se dan por aludidos?

Lo que hay oir/leer
Responder Con Cita
  #13  
Antiguo 11-12-2006
Avatar de Albano
Albano Albano is offline
Miembro
 
Registrado: oct 2004
Ubicación: Nogales, Sonora, Mexico
Posts: 422
Poder: 20
Albano Va por buen camino
Tranquilos...

Cita:
Empezado por Bicho
Prueba a indentar el código para meter los bloques begin-end unos dentro de otros para poder separarlos y tenerlos más claro visiblemente y no te ocurrirá este tipo de errores
La verdad es que necesitas un poco mas de orden en la manera de redactar tu codigo y tus preguntas en el foro silviodp y con 200 mensajes debes de tener la experiencia de que "mientras mas detalles des en tus hilos, mas rápido obtienes respuesta".
Aqui ya no te debe marcar el error que mencionas.
Código Delphi [-]
procedure TForm14.DBEdit2KeyPress(Sender: TObject; var Key: Char);
Var
  n,m:Variant;
begin //(1)
  If Key=#13 Then
  begin //(2)
    ModuloDatos.TblComprobantes.Active:=True;
    If ModuloDatos.TblComprobantes.Locate('Numero',TxtNumero.Text,[]) Then
    begin //(3)
      If ModuloDatos.TblComprobantes.FieldValues['Estado']<>'P' Then
      begin //(4)
        m:=ModuloDatos.TblComprobantes.FieldValues['Cod_soc'];
        If ModuloDatos.TblSocios.Locate('Cod_soc',m,[]) Then TxtSocio.Text:=m;
        n:=ModuloDatos.TblComprobantes.FieldValues['Cod_periodo'];
        If ModuloDatos.TblPeriodos.Locate('Cod_periodo',n,[]) Then TxtPeriodo.Text:=n;
        TxtImporte.Text:=ModuloDatos.TblComprobantes.FieldValues['Importe'];
        Confirmar.SetFocus
      end
      Else //(4)
      begin
        ShowMessage('La factura Nº'+' '+TxtNumero.Text+' '+'ya fue cobrada!!!');
        (Sender as TDBEdit).SelectAll;
      end;
    end
    Else //(3)
    begin
      ShowMessage('Factura no encontrada. Verifique el Número de la misma.');
      (Sender as TDBEdit).SelectAll;
    end; //(3)
  end; //(2)
end; //(1)

Última edición por Albano fecha: 11-12-2006 a las 16:59:26.
Responder Con Cita
  #14  
Antiguo 11-12-2006
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Poder: 22
Bicho Va por buen camino
Todo son maneras de trabajar más cómodamente, yo además de indentar el código suelo colocar los begins en la misma linea del condicional, ya que se que el begin esta siempre en la primera linea, pero no donde está el END. Al tenerlo indentado veo claramente el condicional y el END.
Además otra a la que me acostumbro mucho últimamente es a dejar una linea en blanco siempre antes de un condicional o de cualquier bloque begin-end. Vease:

Código Delphi [-]
procedure TForm14.DBEdit2KeyPress(Sender: TObject; var Key: Char);
Var
  n,m:Variant;
begin //(1)

  If Key=#13 Then begin //(2)
    ModuloDatos.TblComprobantes.Active:=True;

    If ModuloDatos.TblComprobantes.Locate('Numero',TxtNumero.Text,[]) Then begin //(3)

      If ModuloDatos.TblComprobantes.FieldValues['Estado']<>'P' Then begin //(4)
        m:=ModuloDatos.TblComprobantes.FieldValues['Cod_soc'];

        If ModuloDatos.TblSocios.Locate('Cod_soc',m,[]) Then TxtSocio.Text:=m;

        n:=ModuloDatos.TblComprobantes.FieldValues['Cod_periodo'];

        If ModuloDatos.TblPeriodos.Locate('Cod_periodo',n,[]) Then TxtPeriodo.Text:=n;

        TxtImporte.Text:=ModuloDatos.TblComprobantes.FieldValues['Importe'];
        Confirmar.SetFocus
      end
      Else begin//(4)
        ShowMessage('La factura Nº'+' '+TxtNumero.Text+' '+'ya fue cobrada!!!');
        (Sender as TDBEdit).SelectAll;
      end;
    end
    Else begin//(3)
      ShowMessage('Factura no encontrada. Verifique el Número de la misma.');
      (Sender as TDBEdit).SelectAll;
    end; //(3)
  end; //(2)
end; //(1)


Cita:
Empezado por casimiro notevi
Cita:
Originalmente Escrito por silviodp
La verdad que ultimamente hay bastante mala onda en el foro!!!!!

¿en qué lo notaste?
¿verdad que algunos no se dan por aludidos?
Ahí le has dado. La verdad es que yo no iba por lo que había escrito Ñuño, pero en fin...

Paz hermanos.

Saludos
Responder Con Cita
  #15  
Antiguo 11-12-2006
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Cita:
Empezado por Bicho
La verdad es que yo no iba por lo que había escrito Ñuño, pero en fin...

Paz hermanos.
Ciertamente, hoy no debí salir de casa...
Responder Con Cita
  #16  
Antiguo 11-12-2006
silviodp silviodp is offline
Miembro
 
Registrado: may 2003
Ubicación: General Levalle, Argentina
Posts: 277
Poder: 22
silviodp Va por buen camino
No corre

Bueno muchas gracias, lo voy a probar...
Disculpen las molestias ocasionadas no fue mi intención, por ahi con 500 mensajes aprendo, gracias a la gente perfecta yo puedo aprender.
Saludos.-
Responder Con Cita
  #17  
Antiguo 11-12-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
silviodp ¿no tienes las GExperts instaladas?

Tiene una opción maravillosa: pones el ratón en un begin pulsas CTRL + ALT + < cursor derecho > y te salta a su end correspondiente.

El hecho de "leerte la cartilla" por el mal identado es una crítica constructiva aunque no lo creas, un buen identado hace que encuentres los errores rápidamente, además de ser una de las principales bases en programación.

Añade un :
Código Delphi [-]
 With Modulodatos do
y verás como el código se clarifica muchísimo más, porque hace las líneas más cortas y por ende lees más rápido.

Si a esto le añades el acceso a campos persistentes tu código quedaría así:
Código Delphi [-]
procedure TForm14.DBEdit2KeyPress(Sender: TObject; var Key: Char);
Var
  n,m:Variant;
begin //(1)

  If Key=#13 Then 
  with ModuloDatos do  
  begin //(2)
    TblComprobantes.Active:=True;
    If TblComprobantes.Locate('Numero',TxtNumero.Text,[]) Then 
    begin //(3)
      If TblComprobantesEstado.Value <>'P' Then 
      begin //(4)
        m:=TblComprobantesCod_soc.Value;
        If TblSocios.Locate('Cod_soc',m,[]) Then 
         TxtSocio.Text:=m;
        n:=TblComprobantesCod_periodo.Value;
        If TblPeriodos.Locate('Cod_periodo',n,[]) Then 
          TxtPeriodo.Text:=n;
        TxtImporte.Text:=ModuloDatos.TblComprobantesImporte.Value;
        Confirmar.SetFocus
      end
      Else 
      begin//(4)
        ShowMessage('La factura Nº '+TxtNumero.Text+' ya fue cobrada!!!');
        (Sender as TDBEdit).SelectAll;
      end;
    end
    Else 
    begin//(3)
      ShowMessage('Factura no encontrada. Verifique el Número de la misma.');
      (Sender as TDBEdit).SelectAll;
    end; //(3)
  end; //(2)
end; //(1)

Fíjate también que he eliminado las líneas en blanco porque hace que tu vista pierda el identado.

Personalmente me gusta colocar el begin debajo de su if ya que aumenta la percepción visual de ese identado; además deja claro que lleva su begin correspondiente y por tanto hay más de una línea de código afectada. Si pones el begin al final de la línea, se olvida muchas veces al leerlo.

Creo que ambas formas de poner el begin pertenecen a estandares distintos, solo es cuestión de decidirse por uno de ellos.

Puede que te parezcan tonterías, el tiempo me dará la razón .

Otra cosita más, cuando hiciste ese código estabas algo dormido....
Código Delphi [-]
'La factura Nº'+' '+TxtNumero.Text+' '+'ya fue cobrada!!!'
los espacios en blanco que añades a txtnumero se pueden quitar y añadir en el lado izquierdo y derecho, ahorrando 2 concatenaciones de Strings

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #18  
Antiguo 11-12-2006
DANY DANY is offline
Miembro
 
Registrado: nov 2003
Posts: 145
Poder: 21
DANY Va por buen camino
Simplemente de acuerdo con el primer comentario de nuño martinez.
Cual es la duda si vos mismo sabes que estan mal los begin end?.
Queres que te resuelvan el trabajo?.
no es una cuestion de mala onda del foro.
A mi siempre me ayudaron, a decir verdad, mas de lo que ayude.
pero siempre con preguntas conceptuales que estoy seguro de que con su sola lectura ayudaban a los demas.
perdon por mi opinion, soy medio zurdo como dicen en latinoamerica.
Saludos...
Responder Con Cita
  #19  
Antiguo 11-12-2006
silviodp silviodp is offline
Miembro
 
Registrado: may 2003
Ubicación: General Levalle, Argentina
Posts: 277
Poder: 22
silviodp Va por buen camino
No corre

DANY yo dije que alguna vez no me ayudaron???, solo que hay formas y formas de decir las cosas, ademas no quiero que ni vos ni nadie haga mi trabajo, (apenas que podras con el tuyo...), solo que pedi ayuda porque habia probado varias formas y no andaba, obvio que sabia que el problema era con el begin-end..., además nunca me ayudaste en nada vos.
Insisto en algo: hay veces que por mas que las cosas sean obvias, para algunos, por ahi para otros no tanto y hay que responder amablemente, no hacerse el "hombre" porque no nos vemos y estamos lejos...
Responder Con Cita
  #20  
Antiguo 11-12-2006
DANY DANY is offline
Miembro
 
Registrado: nov 2003
Posts: 145
Poder: 21
DANY Va por buen camino
La verdad nunca es triste, lo que no tiene es remedio...
La verdad no ofende.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
la aplicacion no corre en w98 DANY OOP 3 02-02-2007 01:05:16
corre delphi codigo de borland c ?? torito Varios 1 16-06-2005 18:50:16
Mi aplicacion no corre desde CD Coco_jac Varios 6 09-05-2005 21:14:10
Problemas com mi aplicacion, no corre desde CD ??? Coco_jac Conexión con bases de datos 1 08-05-2005 03:45:19
Delphi corre en Mac? adolfoz API de Windows 3 29-10-2004 09:47:25


La franja horaria es GMT +2. Ahora son las 00:37:55.


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