Вы находитесь на странице: 1из 4

* Defino las Variables locales a utilizar

* =======================================
LOCAL i,j,TrendFunc,xlsheet,XLApp,tmpsheet
* Crear la tabla que se va a presentar
* ======================================
SELECT Detalles_compras.codigo,;
Detalles_compras.cantidad,;
Detalles_compras.descripcio,;
Detalles_compras.precio_uni,;
Detalles_compras.precio,;
Detalles_compras.impuesto,;
(Detalles_compras.precio * Detalles_compras.cantidad+Detalles_compras.imp
uesto) as Sub_total,;
Detalles_compras.tipo_repue;
FROM ;
C:\PROYECTO\TABLAS\DETALLES_COMPRAS.DBF;
WHERE Detalles_compras.num_orden = (ThisFormset.Form1.Pageframe1.page1.NUM_OR
DEN1.Value)INTO CURSOR orden_compra
SELECT orden_compra
*!*
BROWSE
numReg=RECCOUNT()
IF numReg > 0 && Si tiene registros
* Notas: Las variables definidas con #DEFINE crean constantes de tiempo
de compilacin en los programas
* Esas variables las utilizo para El programa Excel.
* Encabezados de Celdas en Excel
* ==============================
* Encabezados de la tabla
#DEFINE
#DEFINE
#DEFINE
#DEFINE
#DEFINE
#DEFINE
#DEFINE
#DEFINE

codigo
cantidad
descripcion
PrecionUnitario
Precio
Impuesto1
sub_total
tipo

"Cdigo Repuesto"
"Cantidad"
"Descripcin"
"Precio Unitario"
"Precio"
"Impuesto"
"Sub total"
"Tipo de Repuesto"

* Aqui comienza a Meter la informacin en Excel


* =============================================
* Crea una hoja
* ===============
tmpsheet = GetObject('','excel.sheet')
XLApp = tmpsheet.application
*XLApp.Visible = .T.
XLApp.WorkBooks.Add()

XLSheet = XLApp.ActiveSheet
* Crea el encabezado de los campos
*=================================
XLSheet.Cells(1,1).Value
XLSheet.Cells(1,2).Value
XLSheet.Cells(1,3).Value
XLSheet.Cells(1,4).Value
XLSheet.Cells(1,5).Value
XLSheet.Cells(1,6).Value
XLSheet.Cells(1,7).Value

=
=
=
=
=
=
=

codigo
cantidad
descripcion
PrecionUnitario
Precio
Impuesto1
sub_total

XLSheet.Cells(1,8).Value = tipo
*----------------------------------*-Insertando Encabezados Generales*
* XLSheet.Range("A1:A8").Select && Funciona bien, selecciona las celdas
desde A1 a A8
XLSheet.Range("A1:H1").FONT.BOLD=.T.
*
*
*
*
*
*
*
*
*
*
*

1 Borde Izquierdo
2 Borde derecho
3 Nada
4 Inferior
5 Borde inclinado as \
6 Borde Inclinado asi /
7 Nada
8 Nada
9 Igual al 4 inferior
10 Nada
XLSheet.Range("A1:H1").BORDERS(4).LineStyle=3
XLSheet.Range("A1:H1").BORDERS(4).Weight=3
XLSheet.Range("A1:H1").BORDERS(4).ColorIndex=3
XLSheet.Range("A1:H1").font.NAME="Times"&& "Arial" &&
XLSheet.Range("A1:H1").font.SIZE="12"

* DO (_GENXTAB) WITH 'fac_pendientes'


SELECT * from orden_compra INTO ARRAY Arreglo
* Ahora mete el contenido del arreglo en la celda
* ===============================================
FOR I = 1 TO numReg && I es el nmero de celda, Nm
ero de registros del Cursor
FOR J = 1 to 8 && To nmero de campos del cursor
*!*
IF ISNULL (Arreglo(i,j)) THEN
*!*
XLSheet.Cells(i+1,j).Val
ue =0
*!*
ELSE

XLSheet.Cells(i+1,j).Value = Arr
eglo(i,j)
*!*

ENDIF

ENDFOR
ENDFOR
*!*
XLSheet.Range("A1:D1").Select && Funciona bien, selecciona las
celdas en el rango
*!*
XLSheet.Cells(1,7).select && = tipo

*----------------------------------*-Definiendo Ancho de las columnas-* Slo


XLSheet.Columns("A:A").ColumnWidth
XLSheet.Columns("B:B").ColumnWidth
XLSheet.Columns("C:C").ColumnWidth
XLSheet.Columns("D:D").ColumnWidth
XLSheet.Columns("E:E").ColumnWidth
XLSheet.Columns("F:F").ColumnWidth
XLSheet.Columns("G:G").ColumnWidth
XLSheet.Columns("H:H").ColumnWidth

despus de haber cargado los datos


= 17
&& Cdigo del Repuesto
= 9 && Cantidad
= 35.57 && Descripcin
= 16.86 && Precio Unitario
= 7.57 && Precio
= 10.29 && Impuesto
= 10.29 && Sub total
= 19.29 && Tipo de Repuesto

*
XLSheet.Columns("E:E").NUMBERFORMAT="$ #,##0.00"
..
* NumberFormat = "#,##0.00"
* NumberFormat = "0.00%"

&& Funciona bien

XLSheet.Range("A1:D1").Font.HorizontalAlignment=2

*!*
*!*
*!*
*!*
*!*
*!*
*!*
*!*
*!*

CASE UPPER(lcAlinea)="IZQUIERDA"
.Selection.HorizontalAlignment
CASE UPPER(lcAlinea)="DERECHA"
.Selection.HorizontalAlignment
CASE UPPER(lcAlinea)="CENTRO"
.Selection.HorizontalAlignment
otherwise
.Selection.HorizontalAlignment

= xlHAlignLeft
= xlHAlignRight
= xlHAlignCenter
= xlHAlignGeneral

endcase

* Nombre del Archivo


* ==================

cNombre="C:\proyecto\excel\"+"Orden de Compra " +;


ALLTRIM(str(ThisFormset.Form1.Pageframe1.page1.NUM_ORDEN1.Value))+" "+
;
ALLTRIM(ThisFormset.Form1.Pageframe1.page1.PROVEEDOR1.value)+".XLS"

XLSheet = XLApp.ActiveSheet.SaveAs (cNombre)

*!*
*!*
WINDOW AT 25,35 TIMEOUT 2
*!*

IF FILE (cNombre) && As funciona bien.


WAIT "el nombre existe, inserto la yes"

*!*
*!*
,35 TIMEOUT 2
*!*

ELSE

KEYBOARD '{s}'
WAIT "el nombre NO EXISTE " WINDOW AT 25
ENDIF

FOR I = 1 TO numReg && I es el nmero de celda, Nmero de registros


del Cursor
IF (Arreglo(i,4))=0 THEN
cMensaje="Cuidado no se puede emitir una orden"+
CHR(13)+ alltrim(Arreglo(i,3))+CHR(13)+"No Tiene precio"
MESSAGEBOX(cMensaje,0+64,"Cuidado")
ENDIF
ENDFOR

XLApp.Visible = .T.
* El botn aparece con una imagen tachada o sin tachar, dependiendo si esta en mod
o de edicin o en
* modo de consulta, no puede enviar un correo en modo de edicin se debe esperar q
ue haya editado todo.
* ==============================================================================
=======================

ELSE && Si tiene registros


cMensaje="An no ha seleccionado los repuestos"+CHR(13)+ "de la orden de
compra, No se crear archivo"
MESSAGEBOX(cMensaje,0+64,"Sin informacin")
ENDIF

* cMensaje= Recuerde que una orden de compra es un compromiso de pago, por tal m
otivo es necesario que indique
* el valor de todos los repuestos. En esta orden aparecen repuestos sin precio.
No se enviar una orden o compromiso
* de pago hasta que elimine los repuestos sin precio o hasta que le indique los
precios.

Вам также может понравиться