problemas cursor delete set on
Publicado por es_binario (757 intervenciones) el 19/07/2011 18:35:42
Tengo problemas con un cursor, el caso es que me imprime de un cursor el caso es que es un sencillo formulario de facturacion, por ejemplo tengo el formulario con un boton de eliminar articulo con el siguiente codigo:
lo cual hace totalmente bien, despues hay un boton que manda imprimir la factura despues de que esta fue grabada.
este es el codigo que realiza la funcion, el caso es que me imprime los borrados
les voy a ser honesto, esto lo resolvi hace tiempo pero perdi el programa y lo resolvi de una manera mas bien ingeniosa y no tanto legal, creando cursores apartir de las ventas pero si alguno de ustedes me da una opcion mejor, se los agradeceria, tambien le voy a cranear yo.
saludos.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
*// ver que exista una ventaIF Thisformset.form1.txtsubTotal.Value > 0
*// tempLOCAL des_ as String
LOCAL pre_ as Double
SELECT mi_venta_actual
des_ = mi_venta_actual.descrip
pre_ = mi_venta_actual.p_unitario
*// borra el registroDELETE FROM detalle_venta;
where detalle_venta.descrip = des_ and detalle_venta.p_unitario = pre_
*// limpia al formThisformset.refresca_form()
ENDIF
lo cual hace totalmente bien, despues hay un boton que manda imprimir la factura despues de que esta fue grabada.
1
2
3
4
5
6
7
8
LOCAL vista_previa_o_no as Boolean
IF Thisform.optiongroup1.Value = 1
*// novista_previa_o_no = .F.
ELSE
vista_previa_o_no = .T.
ENDIF
Thisformset.imprime_factura(Thisform.txtPedido.Value, Thisform.txtCopias.Value, vista_previa_o_no)
este es el codigo que realiza la funcion, el caso es que me imprime los borrados
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
LPARAMETERS pedido_imprime as Integer, no_copias as Integer, imprime_vista_previa as Boolean
*// imprime una determinada facturaPUBLIC FECHA_I as Date
PUBLIC NOMBRE_I as String
PUBLIC RFC_I as string
PUBLIC DOM_I as string
PUBLIC COL_I as string
PUBLIC CIUD_I as string
PUBLIC CP_I as string
PUBLIC TEL_I as string
PUBLIC SUB_TOTAL_I as double
PUBLIC IVA_I as double
PUBLIC RET_IVA_I as double
PUBLIC TOTAL_I as double
*// ver que la venta este registradaSELECT * FROM ventas WHERE ventas.pedido = pedido_imprime;
INTO CURSOR mi_venta_imprime
SELECT mi_venta_imprime
IF RECCOUNT() > 0
*// procede una vez encontrada la ventaFECHA_I = mi_venta_imprime.fecha
LOCAL cliente_imprime as Integer
cliente_imprime = mi_venta_imprime.cliente
SELECT * FROM clientes WHERE clientes.cliente = cliente_imprime;
INTO CURSOR mi_cliente_imprime
*// datos del clienteNOMBRE_I = ALLTRIM(mi_cliente_imprime.nombre )
RFC_I = ALLTRIM(mi_cliente_imprime.rfc )
DOM_I = ALLTRIM(mi_cliente_imprime.domicilio )
COL_I = ALLTRIM(mi_cliente_imprime.colonia )
CIUD_I = ALLTRIM(mi_cliente_imprime.ciudad )
CP_I = ALLTRIM(mi_cliente_imprime.cp )
TEL_I = ALLTRIM(mi_cliente_imprime.tel )
*// detalle de la ventaSELECT cantidad as CANT_I, descripcion as DESCRIP_I, p_unitario as P_UNITARIO_I, pedido;
FROM detalleventa WHERE detalleventa.pedido = pedido_imprime;
INTO CURSOR isi READWRITE
*// si se desglosa o no el iva *//IF !EMPTY(RFC_I) && desglosa iva
*// el cursor se mantiene igual *// subtotalSELECT SUM(ROUND(isi.CANT_I * isi.P_UNITARIO_I,2)) as subtotal_imprime FROM isi;
INTO CURSOR cur_tot_sub_a
SUB_TOTAL_I = ROUND(cur_tot_sub_a.subtotal_imprime,2)
*// totalesIVA_I = ROUND(SUB_TOTAL_I * (iva_/100),2)
RET_IVA_I = 0TOTAL_I = ROUND(SUB_TOTAL_I * (1+(iva_/100)),2)
ELSE && no desglosa el iva
*// el cursor se le agrega el ivaUPDATE isi SET isi.P_UNITARIO_I = ROUND((isi.P_UNITARIO_I * (1 + (iva_/100))),2)
*// subtotalSELECT SUM(ROUND(isi.CANT_I * isi.P_UNITARIO_I,2)) as subtotal_imprime FROM isi;
INTO CURSOR cur_tot_sub_b
SUB_TOTAL_I = ROUND(cur_tot_sub_b.subtotal_imprime,2)
*// totales IVA_I = 0 RET_IVA_I = 0 TOTAL_I = SUB_TOTAL_IENDIF
SELECT isi
GO top
*// listo todo para mandar imprimirIF imprime_vista_previa = .T.
*// una sola vez Report form "C:\SISSERPCFACTUR\REPORTS\factura.frx" previewELSE && manda a la impresora
*// las veces que el cliente indique FOR a = 1 TO no_copias Report form "C:\SISSERPCFACTUR\REPORTS\factura.frx" to print noeject noconsoleENDFOR
ENDIF
ENDIF
les voy a ser honesto, esto lo resolvi hace tiempo pero perdi el programa y lo resolvi de una manera mas bien ingeniosa y no tanto legal, creando cursores apartir de las ventas pero si alguno de ustedes me da una opcion mejor, se los agradeceria, tambien le voy a cranear yo.
saludos.
Valora esta pregunta


0
