PDA

Ver la Versión Completa : Problemas Ordenando Una Grilla


josejose
26-01-2007, 17:37:13
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:

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