Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problemas Ordenando Una Grilla (https://www.clubdelphi.com/foros/showthread.php?t=39672)

josejose 26-01-2007 17:37:13

Problemas Ordenando Una Grilla
 

Tengo la siguiente inquietud tengo un programa que emite una factura

En dicho programa tengo una relación maestro detalle con los siguientes campos


Tabla Maestro
Código _ maestro
Factura
Fecha
Cliente


Tabla detalle
Código _ detalle
Código _ maestro
Código _ articulo
Descripción
Precio


La relación esta clara
Tengo un Dbgrid en la parte del detalle y cuando hago clic en la parte del código _ articulo me llama el articulo y trae su descripción y el precio
Lo que me gustaría poder hacer es controlar que el usuario no pueda meter un articulo si esta dentro de la factura y poder ordenar los para que queden agrupados

Aquí esta el ejemplo del código que utilizo para introducir el articulo en la factura


var ls_cuenta: string;
begin
tbl_detallecotizacion.Edit;
ls_cuenta := Tbl_Detallecotizacion.FieldbyName('Codigo_Articulos').AsString;
Qry_Articulos.Close;
with qry_Articulos do begin
with sql do begin
clear;
add ('select * from Articulos');
add ('where Codigo_Articulos = ');
add (''''+ls_cuenta+'''');
prepared;
open;
if recordcount = 0 then
begin
ShowMessage('Cuenta no existe en Catalogo de cuentas');
Abort;

end;
if Dts_DetalleOrden.State in [dsinsert,dsedit] then
Tbl_Detallecotizacion.FieldByName('Descripcion_Articulos').Asstring := Qry_Articulos.FieldByname('Descripcion_Articulos').Value;

Estoy trabajando en delphi7 y access 2003
Recuerden por favor explicar me con algo de código no tengo tantos conocimientos como ustedes pero espero aprender cada día mas gracias a esta gran comunidad

Lepe 26-01-2007 20:06:36

Puedes usar la misma consulta qry_Articulos para ver si el que está introduciendo ya existe:
Código Delphi [-]
var ls_cuenta: string;
begin
  tbl_detallecotizacion.Edit;
  ls_cuenta := Tbl_Detallecotizacion.FieldbyName('Codigo_Articulos').AsString;
  Qry_Articulos.Close;
  with qry_Articulos do begin
 with sql do 
  begin
    text := ' select * from articulos where codigo_articulos = '+ quotedstr(ls_cuenta) + ' and codigo_maestro = ' + quotedstr(Codigo_maestro_de_la_tabla_detalle);
    Open;
    if qry_articulos.isempty then
    begin 
       // vamos bien, en esta factura no existe ese artículo
      Close; // cerramos la consulta:
      clear;
      add ('select * from Articulos');
      add ('where Codigo_Articulos = ');
      add (''''+ls_cuenta+'''');
      prepare; // sobraba una letra "d"
      open;
      if recordcount = 0 then
      begin
        ShowMessage('Cuenta no existe en Catalogo de cuentas');
      end
    end
    else 
       raise exception.create('el artículo ' + lscuenta + ' ya existe en la factura');
end;
if Dts_DetalleOrden.State in [dsinsert,dsedit] then
Tbl_Detallecotizacion.FieldByName('Descripcion_Articulos').Asstring := Qry_Articulos.FieldByname('Descripcion_Articulos').Value;


Saludos


La franja horaria es GMT +2. Ahora son las 03:54:08.

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