Date: prev next · Thread: first prev next last


Alguna vez  me vi obligado hacer algo parecido, fue como una especie de consulta de una base de 
datos. Lo resolví así
REM  *****  BASIC  *****
Option Explicit

Sub BuscarFactura()

Dim Fila As Long, Item As Long, Registro As Long
Dim Celda As Variant 

Dim oNfac As Object, oCodcliente As Object, oFecha As Object, oFpago As Object, oCampo As Object, 
oTCom As Object, oDesc As Object

Dim dNfac As Object, dCodcliente As Object, dFecha As Object, dFpago As Object, dCampo As Object, 
dTCom As Object, dDesc As Object

Dim Docu As Object, HojaDestino As Object, HojaOrigen As Object, HojaOrigen2 As Object

'Definimos los objetos documento de trabvajo, hoja de destino y de origen de los datos

Docu = ThisComponent
HojaOrigen = Docu.getSheets().getByName ( "REGVENTAS" )
HojaOrigen2 = Docu.getSheets().getByName ( "GASTOS" )
HojaDestino = Docu.getSheets().getByName ( "DEVFACTURA" )

Call DesbloqueoHojas ()

'Se debe leer la factura que vamos a buscar
dNfac = HojaDestino.getCellRangeByName ( "J6" )
If dNfac.getType() = 0 Then
    MsgBox "Debe ingresar un número de factura valido."
else
    'Buscamos en la tabla de registro de ventas la factura correspondiente
    Fila = 1
    oNfac = HojaOrigen.getCellByPosition ( 1 , Fila )
    Do while oNfac.getType() <> 0 
        If oNfac.getString() = dNfac.getString() Then
            Registro = Fila
        End If
            Fila = Fila + 1
            oNfac = HojaOrigen.getCellByPosition ( 1 , Fila )
    Loop 

    'Ahora debemos poner los datos de la compra en el formulario de devolución de ventas
    'Definimos los datos de origen y los campos destino
    oCodcliente = HojaOrigen.getCellByPosition ( 3 , Registro )
    oFecha = HojaOrigen.getCellByPosition ( 2 , Registro )
    oFpago= HojaOrigen.getCellByPosition ( 7 , Registro )
    
    'Un ciclo mas para la busqueda del descuento si aplica.
    'Buscamos en la tabla de registro de ventas la factura correspondiente
    Fila = 1
    Registro = 0
    oNfac = HojaOrigen2.getCellByPosition ( 1 , Fila )
    Do while oNfac.getType() <> 0 
        If oNfac.getString() = dNfac.getString() Then
            Registro = Fila
        End If
            Fila = Fila + 1
            oNfac = HojaOrigen2.getCellByPosition ( 1 , Fila )
    Loop    
    
    If Registro = 0 Then
    dDesc = HojaDestino.getCellRangeByName ( "I27" )
    dDesc.setValue(0,0)
    Else
    oDesc = HojaOrigen2.getCellByPosition( 5 , Registro )
    dDesc = HojaDestino.getCellRangeByName ( "I27" )
    dDesc.setValue(oDesc.getValue())
    End If

    dCodcliente = HojaDestino.getCellRangeByName ( "D8" )
    dFecha = HojaDestino.getCellRangeByName ( "G6" )
    dFpago = HojaDestino.getCellRangeByName ( "E26" )

    
    'Ponemos los datos encontrado en el formulario
    dCodcliente.setString(oCodcliente.getString())
    dFecha.setString(oFecha.getString())
    dFpago.setString(oFpago.getString())

            
End if

    'Ahora buscamos en la tabla del cardex los productos comprados con la factura
    'que estamos buscando.

HojaOrigen = Docu.getSheets().getByName ( "CARDEX" )

'Se debe leer la factura que vamos a buscar y se limplia los registros de busquedas anteriores
dCampo = HojaDestino.getCellRangeByName ( "B15:J24" )
dCampo.clearcontents(5) 
dNfac = HojaDestino.getCellRangeByName ( "J6" )
If dNfac.getType() = 0 Then
    MsgBox "Debe ingresar un número de factura valido."
else
    
    'Buscamos en la tabla de cardex los items de la factura correspondiente
    Fila = 1
    oNfac = HojaOrigen.getCellByPosition ( 1 , Fila )
    For Item = 14 to 23 
        Do while oNfac.getType() <> 0 
            If oNfac.getString() = dNfac.getString() Then
                Registro = Fila
                oNfac =HojaOrigen.getCellByPosition ( 1 , Registro )    'Codigo del producto
                dCampo = HojaDestino.getCellByPosition ( 1 , Item )
                dCampo.setValue(oNfac.getValue())
                oNfac = HojaOrigen.getCellByPosition ( 3 , Registro )    'Presentación del producto
                dCampo = HojaDestino.getCellByPosition ( 3 , Item )
                dCampo.setString(oNfac.getString())
                oNfac = HojaOrigen.getCellByPosition ( 4 , Registro )    'Nombre o descripción del 
producto 
                dCampo = HojaDestino.getCellByPosition ( 4, Item )
                dCampo.setString(oNfac.getString())
                oNfac = HojaOrigen.getCellByPosition ( 7 , Registro )    'Cantidad del producto
                dCampo = HojaDestino.getCellByPosition ( 6 , Item )
                dCampo.setValue(oNfac.getValue())
                oNfac = HojaOrigen.getCellByPosition ( 8 , Registro )    'Precio del producto
                dCampo = HojaDestino.getCellByPosition ( 7 , Item )
                dCampo.setValue(oNfac.getValue())
                oNfac = HojaOrigen.getCellByPosition ( 10 , Registro )    'porcentaje de iva
                dCampo = HojaDestino.getCellByPosition ( 9 , Item )
                dCampo.setValue(oNfac.getValue())
                Item = Item + 1                
            End If
            'encontrado el primir item forzamos el incremento de las filas para continuar
            'con la busqueda de los demas items
            Fila = Fila + 1
            oNfac = HojaOrigen.getCellByPosition ( 0 , Fila )
                
        Loop    
    Next
End If    
call BloqueoHojas ()
End Sub
 Julián David Montoya Restrepo Ingeniero Industrial Universidad de Antioquia
Vereda Viboral
El Carmen de Viboral - Antioquia
Cel : 3003725984
 


     El Jueves 26 de marzo de 2015 18:33, "negrolito@mailoo.org" <negrolito@mailoo.org> escribió:
   
 

  

Hola listeros:

Mi consulta (un tanto complicada en el título) consiste en que deseo
hacer una función en basic que me permite ver una serie de valores en un
rango de celdas en una hoja de cálculo espécifica.

Function puntosDeMontaje(inicio,largo)

 while inicio =< final
 inicio = inicio + 60 

 End while

End Function

No tengo idea de cómo ir presentando cada valor en distintas celdas, una
abajo de otra.
Si me pueden orientar muy agradecido.ómo 
 
-- 
Para instrucciones sobre darse de baja envíe un mensaje a: users+unsubscribe@es.libreoffice.org
¿Problemas? http://es.libreoffice.org/asistencia/listas-de-correo/como-darse-de-baja/
Guías para envío + más: http://wiki.documentfoundation.org/Netiquette/es
Archivo de la lista: http://listarchives.libreoffice.org/es/users/
Todos los mensajes enviados a esta lista serán archivados públicamente y no pueden ser eliminados


 
  
-- 
Para instrucciones sobre darse de baja envíe un mensaje a: users+unsubscribe@es.libreoffice.org
¿Problemas? http://es.libreoffice.org/asistencia/listas-de-correo/como-darse-de-baja/
Guías para envío + más: http://wiki.documentfoundation.org/Netiquette/es
Archivo de la lista: http://listarchives.libreoffice.org/es/users/
Todos los mensajes enviados a esta lista serán archivados públicamente y no pueden ser eliminados

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.