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 15-12-2007
whatson whatson is offline
Miembro
 
Registrado: dic 2007
Posts: 19
Poder: 0
whatson Va por buen camino
Question Problemas de condicional If

Gracias por atender este mensaje. No he podido lograr que cuando no se encuentre el articulo, me ponga en la LabelError "Clave de Articulo no encontrada"

Le agradezco cualquier comentario.


Código:
 
if Key = VK_RETURN then begin
               FormPrincipal.ZQueryProds.Open;
               with FormPrincipal.ZQueryProds do begin
                      If ZQueryProds.Locate('ARTICULO', EditVentas.Text,[loCaseInsensitive]) then begin
                      .......resto del codigo.........
 
                      end;
              end
              else begin
                   FormPrincipal.LabelError.Caption := 'Clave de articulo no encontrada';
              end;
end;
Responder Con Cita
  #2  
Antiguo 15-12-2007
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Hola Whatson. Bienvenido al club.

El problema está en un punto coma que has puesto antes del esle. Al poner ahí el puntocoma, el else hace referencia a if key = vk_return.

¡Un despite lo tiene cualquiera!


Saludos, y pásate por aquí siempre que lo necesites.



Edito: ahora que lo veo, también sobra un end antes del else. Es decir, quita el "end;" y ponlo después de "LabelError.Caption..." (ves lo que decía de los despistes... )

Última edición por ixMike fecha: 15-12-2007 a las 02:19:46.
Responder Con Cita
  #3  
Antiguo 15-12-2007
whatson whatson is offline
Miembro
 
Registrado: dic 2007
Posts: 19
Poder: 0
whatson Va por buen camino
Te agradezco Tu respuesta , en verdad creo que seria necesario pasar todo el codigo para que lo veas:

if Key = VK_RETURN then begin
FormPrincipal.ZQueryProds.Open;
with FormPrincipal.ZQueryProds do begin

If ZQueryProds.Locate('ARTICULO', EditVentas.Text,[loCaseInsensitive]) then begin

// Acciones para una nueva venta
// Voy a obtener el nuevo consecutivo
with FormPrincipal.ZTableConsec do begin
Locate('DATO', 'PARTVTA', [loCaseInsensitive]);
Edit;
FieldByName('Consec').AsInteger :=
FieldByName('Consec').AsInteger + 1;
SIGUIENTE := FieldByName('Consec').AsInteger ;
Post;
end;

FormPrincipal.ZQueryPartsVta.Append;
FormPrincipal.ZQueryPartsVta.FieldByName('VENTA').asString := FormPrincipal.ZQueryVenta.FieldByName('VENTA').asString;
FormPrincipal.ZQueryPartsVta.FieldByName('ARTICULO').asString := EditVentas.Text ;
FormPrincipal.ZQueryPartsVta.FieldByName('CANTIDAD').asString := '1';
FormPrincipal.ZQueryPartsVta.FieldByName('OBSERV').asString := FieldByName('DESCRIP').asString;
FormPrincipal.ZQueryPartsVta.FieldByName('Precio').AsCurrency := FieldByName('Precio1').asCurrency;
FormPrincipal.ZQueryPartsVta.FieldByName('ID_SALIDA').asInteger := SIGUIENTE;
FormPrincipal.ZQueryPartsVta.Post;
FormPrincipal.ZQueryPartsVta.FieldByName('IMPORTE').asCurrency := FieldByName('Precio1').asCurrency;
EditVentas.Clear;
end
else begin
FormPrincipal.LabelError.Caption := 'Clave de articulo no encontada';
end;
end;
EditVentas.Clear;
end;


end;
Responder Con Cita
  #4  
Antiguo 15-12-2007
Avatar de xEsk
[xEsk] xEsk is offline
Miembro Premium
 
Registrado: feb 2006
Posts: 454
Poder: 19
xEsk Va por buen camino
Hola whatson, solo como nota para el futuro, es recomendable usar las etiquetas DELPHI cuando pongas código, así será mucho mas fácil entender el código.

Saludos!
Responder Con Cita
  #5  
Antiguo 15-12-2007
whatson whatson is offline
Miembro
 
Registrado: dic 2007
Posts: 19
Poder: 0
whatson Va por buen camino
Gracias por la recomendacion.
De cualquier forma, Les pido de nuevo su ayuda, ya que no he podido resolverlo.
Responder Con Cita
  #6  
Antiguo 16-12-2007
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Cita:
Empezado por whatson Ver Mensaje
Gracias por la recomendacion.
De cualquier forma, Les pido de nuevo su ayuda, ya que no he podido resolverlo.
Creí que ya lo tenías:

Cita:
Empezado por whatson Ver Mensaje
Te agradezco Tu respuesta , en verdad creo que seria necesario pasar todo el codigo para que lo veas:


Este código (que es igual que tuyo, pero más "limpio") debería estar bien:

Código Delphi [-]
//Si este código está dentro de algún procedure TFormPrincipal.LoQueSea no es necesario poner dentro FormPrincipal.Tabla
if Key = VK_RETURN then //Si se pulsa ENTER
  begin
  with FormPrincipal.ZQueryProds do
    begin
    Open;
    If Locate('ARTICULO', EditVentas.Text,[loCaseInsensitive]) then
      begin
      with FormPrincipal.ZTableConsec do
        begin
        Locate('DATO', 'PARTVTA', [loCaseInsensitive]);
        Edit;
        FieldByName('Consec').AsInteger := FieldByName('Consec').AsInteger + 1;
        SIGUIENTE := FieldByName('Consec').AsInteger ;
        Post;
        end; //With FormPrincipal.ZTableConsec do
      With FormPrincipal.ZQueryPartsVta do
        begin
        Append;
        FieldByName('VENTA').asString := FormPrincipal.ZQueryVenta.FieldByName('VENTA').asString;
        FieldByName('ARTICULO').asString := EditVentas.Text ;
        FieldByName('CANTIDAD').asString := '1';
        FieldByName('OBSERV').asString := FieldByName('DESCRIP').asString;
        FieldByName('Precio').AsCurrency := FieldByName('Precio1').asCurrency;
        FieldByName('ID_SALIDA').asInteger := SIGUIENTE;
        Post;
        FieldByName('IMPORTE').asCurrency := FieldByName('Precio1').asCurrency;
        EditVentas.Clear;
        end; //With FormPrincipal.ZQueryPartsVta do
      end //If Locate
    else
      //begin -> para una sola línea el begin/end después de un else no es necesario
      FormPrincipal.LabelError.Caption := 'Clave de articulo no encontada';
      //end;
    end; //with FormPrincipal.ZQueryProds do
  EditVentas.Clear;
  end; //If Key = VK_RETURN

Ahora, funciona sólo si estás seguro de que todo lo que se encuentre en ZQueryProds como "ARTICULO" es seguro que también está en ZTableConsec como "DATO", sino, pues necesitarías hacer esta pequeña modificación:

Código Delphi [-]
    If Locate('ARTICULO', EditVentas.Text,[loCaseInsensitive]) then
      begin
      with FormPrincipal.ZTableConsec do
        begin
        If Locate('DATO', 'PARTVTA', [loCaseInsensitive]) then
          begin
          Edit;
          FieldByName('Consec').AsInteger := FieldByName('Consec').AsInteger + 1;
          SIGUIENTE := FieldByName('Consec').AsInteger ;
          Post;
          end //El otro Locate
        else
          FormPrincipal.LabelError.Caption := 'Clave de articulo no encontada';
        end; //With FormPrincipal.ZTableConsec do

      {...}

       end //If Locate
    else
      //begin -> para una sola línea el begin/end después de un else no es necesario
      FormPrincipal.LabelError.Caption := 'Clave de articulo no encontada';
      //end;
    end; //with FormPrincipal.ZQueryProds do
  EditVentas.Clear;
  end; //If Key = VK_RETURN

Nota: repásate el uso de with ... do.
Nota 2: identa tu código (esto es, deja espacios a la izquierda, más espacios cuanto más subniveles de begins, ifs, fors y demás utilices), así será más legible (para los demás y para ti mismo).


Saludos.

Última edición por ixMike fecha: 16-12-2007 a las 01:01:02.
Responder Con Cita
  #7  
Antiguo 17-12-2007
whatson whatson is offline
Miembro
 
Registrado: dic 2007
Posts: 19
Poder: 0
whatson Va por buen camino
ixMike
Gracias. El principal problema fue el mal estilo de programacion, asi como una linea mal colocada en el evento onChange del EditVentas.

Gracias de Nuevo a Todos.
Problema resuelto.
Responder Con Cita
  #8  
Antiguo 18-08-2010
Avatar de microbiano
microbiano microbiano is offline
Miembro
 
Registrado: sep 2008
Ubicación: Mexico D.F
Posts: 349
Poder: 16
microbiano Va por buen camino
Puedes usar CNPack

para un estilo de programacion mas estructurado puedes usar el CNPACK muy bueno que te ayuda a la justificacion del lineas de codigo asi como algunos usos mas.

la liga es:

www.cnpack.org/
http://www.cnpack.org/showlist.php?id=39&lang=en

o en su caso mandame un correo y te lo paso
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
Compilador Condicional sercornejov Varios 4 22-09-2007 01:14:08
If condicional al afectar existencias con store procedure... uper Firebird e Interbase 2 16-09-2005 17:42:06
En libertad condicional creador de sasser jachguate Noticias 2 11-07-2005 23:12:42
locate condicional gatsoft2 Varios 10 06-05-2005 16:57:37
Sentencia condicional dentro de MYSQL quade MySQL 1 02-11-2004 16:36:30


La franja horaria es GMT +2. Ahora son las 01:02:22.


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