Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Validar columna en grid (https://www.clubdelphi.com/foros/showthread.php?t=93922)

Saul Rivera 09-05-2019 21:11:10

Validar columna en grid
 
otra Consulta mRoman
yo tengo un cxgrid y hay una columna cantidad yo quiero validar esa columna para que me tire un mj de si la cantidad ingresada sobrepasa la existencia en la base de datos ejemplo

if(gvDataDBTableView1CANTIDAD.EditValue > dmMain2.tblExistenciasCANTIDAD_STOCK.AsFloat ) then
begin
ShowMessage('La cantida ingresada supera la existencia de este prodcuto') ;
end;
tengo este codigo en el boton guardar pero no se si lo hice bien

mRoman 09-05-2019 21:22:43

Cita:

Empezado por Saul Rivera (Mensaje 531917)
otra Consulta mRoman
yo tengo un cxgrid y hay una columna cantidad yo quiero validar esa columna para que me tire un mj de si la cantidad ingresada sobrepasa la existencia en la base de datos ejemplo

if(gvDataDBTableView1CANTIDAD.EditValue > dmMain2.tblExistenciasCANTIDAD_STOCK.AsFloat ) then
begin
ShowMessage('La cantida ingresada supera la existencia de este prodcuto') ;
end;
tengo este codigo en el boton guardar pero no se si lo hice bien

No lo sé...te marca algún error? O efectivamente debe de mandar el error y no lo hace?
Veo que los tipos de datos son diferentes "EditValue" y "AsFloat".

Normalmente este tipo de validaciones las hago dentro del Query (Select), en tiempo de ejecución, construyo el Query y lo ejecuto:
Código Delphi [-]
              qryKardex.SQL.Add('select a.id_producto,');
              qryKardex.SQL.Add('       b.id_articulo_componente,');
              qryKardex.SQL.Add('       e.descripcion_larga,');
              qryKardex.SQL.Add('       b.cantidad, b.cantidad*'+mskCantidad.Text+' as art_necesarios,');
              qryKardex.SQL.Add('       (select c.existencias');
              qryKardex.SQL.Add('        from kardex_detalle c');
              qryKardex.SQL.Add('        where c.cod_articulo=b.id_articulo_componente');
              qryKardex.SQL.Add('          and c.consec=(select MAX(d.consec)');
              qryKardex.SQL.Add('                        from kardex_Detalle d');
              qryKardex.SQL.Add('                        where d.cod_articulo=c.cod_articulo) )-(b.cantidad*'+mskCantidad.Text+') as diferencia,');
              qryKardex.SQL.Add('       (select c.existencias');
              qryKardex.SQL.Add('        from kardex_detalle c');
              qryKardex.SQL.Add('        where c.cod_articulo=b.id_articulo_componente');
              qryKardex.SQL.Add('          and c.consec=(select MAX(d.consec)');
              qryKardex.SQL.Add('                        from kardex_Detalle d');
              qryKardex.SQL.Add('                        where d.cod_articulo=c.cod_articulo) ) as existencias,');
              qryKardex.SQL.Add('       e.control_existencias,');
              qryKardex.SQL.Add('       case when (select f.cod_articulo');
              qryKardex.SQL.Add('                  from kardex f');
              qryKardex.SQL.Add('                  where f.cod_articulo=b.id_articulo_componente)>=1 then ''S''');
              qryKardex.SQL.Add('       else ''N''');
              qryKardex.SQL.Add('       end as con_kardex,');
              qryKardex.SQL.Add('       e.stock_minimo');
              qryKardex.SQL.Add('from producto a,');
              qryKardex.SQL.Add('     producto_componente b,');
              qryKardex.SQL.Add('     articulo e');
              qryKardex.SQL.Add('where a.id_producto=b.id_producto');
              qryKardex.SQL.Add('  and a.id_producto=:cod_art');
              qryKardex.SQL.Add('  and b.id_articulo_componente=e.cod_articulo');
              qryKardex.SQL.Add('  and e.control_existencias=''S''');
              qryKardex.close;
              qryKardex.ParamByName('cod_art').AsString:=qryArticulo.fieldByName('id_producto').AsString;
              qryKardex.Open;
              qryKardex.First;
              While not(qryKardex.Eof) do
              begin

{sigue mas código...validaciones,etc.}

Observa a "mskCantidad.Text":
Código Delphi [-]
              qryKardex.SQL.Add('                        where d.cod_articulo=c.cod_articulo) )-(b.cantidad*'+mskCantidad.Text+') as diferencia,');

Y mas adelante en el código valido algo como lo que tu quieres hacer:
Código Delphi [-]
                           //VALIDA SI SE QUEDO SIN EXISTENCIAS, CUANDO SEA MENOR A 0 EN "DIFERENCIA"
                            if qryKardex.FieldByName('diferencia').AsInteger<0 then
                            begin
                                P_texto:='Te quedaste sin existencias para el articulo: '+qryKardex.FieldByName('id_articulo_componente').AsString+'-'+
                                                                                          qryKardex.fieldByName('descripcion_larga').AsString+chr(13)+
                                         'Existencias actuales: '+qryKardex.fieldByName('Existencias').AsString+chr(13)+
                                         'Articulos por defatult: '+qryKardex.fieldbyName('cantidad').AsString+chr(13)+
                                         'Cant. registrada en este pedido: '+mskCantidad.Text;
                                Application.MessageBox(Pchar(p_texto),'Error',mb_ok+mb_IconError);
                                edBuscar.SetFocus;
                            end;
                            //VALIDAMOS SI LAS EXISTENCIAS SON MENORES AL STOCK_MINIMO
                            if qryKardex.FieldByName('existencias').AsInteger<=
                               qryKardex.FieldByName('stock_minimo').AsInteger then
                            begin
                                Application.MessageBox('Existencias iguales o por debajo del STOCK MINIMO','Importante AVISO',mb_ok+mb_IconExclamation);
                            end;

Espero te sirva Saúl.

Saludos.

p.d. Para cada pregunta que hagas es un hilo diferente. Deberías haber empezado otro hilo con la pregunta que me hiciste. Aquí recomiendan leer la guia de estilo, ya lo hiciste?. Algún moderador que nos apoye con esto?. Gracias.

Saul Rivera 09-05-2019 21:36:44

si ya lei la guia se me paso por alto estoy trabajando en las dos soluciones que me diste muchas gracias por tu ayuda si logro hacer funcionar los codigos yo te aviso

Casimiro Notevi 09-05-2019 22:33:01

Cita:

Empezado por mRoman (Mensaje 531919)
p.d. Para cada pregunta que hagas es un hilo diferente. Deberías haber empezado otro hilo con la pregunta que me hiciste. Aquí recomiendan leer la guia de estilo, ya lo hiciste?. Algún moderador que nos apoye con esto?. Gracias.

^\||/^\||/^\||/


La franja horaria es GMT +2. Ahora son las 00:07:01.

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