Ver Mensaje Individual
  #2  
Antiguo 16-12-2007
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Reputación: 24
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