Página 1 de 1

[RESUELTO] formulario para entrada de datos

Publicado: Dom Mar 25, 2018 3:54 pm
por JAVIPEINA
Hola.
He revisado los temas antiguos y no consigo encontrar nada que me solucione el problema.
Estoy intentando crear una base para hace inventario del stock de material de un quirófano.
Tengo creadas 3 tablas: una llamada stock que incorpora la matriz de datos con todo el material inventariable, una tabla llamada "salidas" en la que se debe ir incorporando cada material conforme se usa para restarse del inventario, y una de entradas igual que la de salidas pero que añade el material nuevo que se va reponiendo.
La base funciona brien, según creo, pero estoy intentando crear un formulario para que únicamente haya que clicar un botón e introducir únicamente el código de barras en la columna B de entradas y un código de barras y el NHC (número identificador de paciente) en las columnas B y K de la hoja salidas. Esto soy incapaz de hacerlo.
He buscado en foros y he conseguido encontrar una macro que teóricamente hace esto, pero solo funciona en el archivo de ejemplo donde proporcionan la macro y yo (que no tengo mucha idea de como modificar una macro) no consigo que funcione en mi archivo.
Las indicaciones para realizar el formulario con la macro que comento las saco de este enlace: http://wiki.open-office.es/Cuadro_de_di ... ffice_Calc.

Re: formulario para entrada de datos

Publicado: Dom Mar 25, 2018 7:24 pm
por JAVIPEINA
Bueno, he conseguido que me funcione para meter datos en las columnas que yo quiero, pero no para que comience a contar a partir de la octava fila, que es donde a mí me interesa que empiece. Me estoy planteando rellenar las filas 1 a 8 y dejarlo como está. Es un chapuzón, pero mejor que lo que tengo ahora mismo sí es...

Re: formulario para entrada de datos

Publicado: Dom Mar 25, 2018 7:33 pm
por JAVIPEINA
***** BASIC *****
Option Explicit
Dim oDialogo As Object

' Abre el diálogo de nombre Dialogo
Sub Mostrar_Dialogo()
'-------------------------------------------------------------------
DialogLibraries.LoadLibrary("Standard")
oDialogo=CreateUNODialog(DialogLibraries.Standard.Dialogo)
oDialogo.Execute()
End Sub

' Cierra el diálogo
Sub Cerrar_Dialogo()
'-------------------------------------------------------------------
oDialogo.EndExecute()
MsgBox "Gracias por la visita. Vuelve pronto !!!", 64, "Diálogo en Calc"
End Sub

' Almacena los datos en la siguiente línea disponible de la Hoja2, y vacía los datos del formulario
Sub Guardar_Datos()
'-------------------------------------------------------------------
Dim xDato As Variant, nRow As Long

If MsgBox( "¿Deseas guardar los cambios realizados?", 33, "Diálogo en Calc" ) = 1 Then
nRow = UltimaFila( 1 )
With oDialogo.Model
xDato = .TextField1.Text
ThisComponent.Sheets(1).GetCellByPosition(1,nRow).SetFormula( xDato )

xDato = .TextField2.Text
ThisComponent.Sheets(1).GetCellByPosition(10,nRow).SetFormula( xDato )

.TextField1.Text = ""
.TextField2.Text = ""
End With
End If
End Sub

' Calcula cual es la primera línea disponible en la hoja
Function UltimaFila( nHoja As Integer ) As Long
'-------------------------------------------------------------------
Dim oHoja As Object, n As Long
oHoja = ThisComponent.Sheets(nHoja)
n = 0
Do While True
If oHoja.GetCellByPosition(0,n).GetFormula = "" Then
Exit Do
End If
n=n+1
Loop
UltimaFila = n
End Function

Re: formulario para entrada de datos

Publicado: Dom Mar 25, 2018 7:36 pm
por JAVIPEINA
Ésta macro estoy utilizando.
He rellenado las filas 1-0 fusionándolas y poniendo un título para que comenzase a contar desde la octava fila. Pero al hace esto,no añade datos, aunque no da errores.
La otra alternativa que es cambiar en este comando:

If MsgBox( "¿Deseas guardar los cambios realizados?", 33, "Diálogo en Calc" ) = 1 Then
nRow = UltimaFila( 1 )
With oDialogo.Model
xDato = .TextField1.Text
ThisComponent.Sheets(1).GetCellByPosition(1,nRow).SetFormula( xDato )

en nRow = UltimaFila (1) por un (8), sí que da un error de valor inadmisible por encontrarse fuera del área definida.
No sé seguir.

Re: formulario para entrada de datos

Publicado: Lun Mar 26, 2018 10:42 am
por PepeOooSevilla
Hola.
Por un lado ...
JAVIPEINA escribió:... pero no para que comience a contar a partir de la octava fila, que es donde a mí me interesa que empiece.
Modifica esta línea en "Function UltimaFila":

Código: Seleccionar todo

n = 0
por

Código: Seleccionar todo

n = 7
' Las columnas y las filas comienzan por 0 (cero), es decir,
' GetCellByPosition(0,0) es la celda "A1", luego,
' GetCellByPosition(0,7) es la celda "A8"
Por otro lado ...
JAVIPEINA escribió:... en nRow = UltimaFila (1) por un (8), sí que da un error de valor inadmisible por encontrarse fuera del área definida.
Te da error porque ese número, (1) u (8), se está refiriendo a una HOJA del archivo CALC, no a una fila. Y ese (8) hace referencia a la novena hoja de tu archivo.

Código: Seleccionar todo

' ThisComponent.Sheets(1)
' Se refiere a la segunda hoja empezando por la izquierda. Por ejemplo:
' Si tienes 3 hojas que se llaman "Hoja1", "Hoja2" y "Hoja3", en ese orden,
' Sheets(1) se refiere a la "Hoja2" (también comienzan por el 0)
¡Ojo! con lo anterior, Sheets(1) siempre es la segunda hoja empezando por la izquierda. Si has movido esa hoja ya no será la Sheets(1).

Si estás interesado en la programación de macros para OpenOffice/LibreOffice tienes que leer el libro Aprendiendo OOo Basic de nuestro compañero mauricio .
También en las páginas Manuales de Apache OpenOffice en español: Basic y, Basic OpenOffice: Apache OpenOffice Basic en español de nuestro compañero SLV-es, encontrarás muy buena información.

Saludos cordiales.

Re: formulario para entrada de datos

Publicado: Lun Mar 26, 2018 4:17 pm
por JAVIPEINA
Muchísimas gracias.
Problema resuelto. Ya tengo mi base preparada.
Y gracias por recomendarme el libro. No había hecho nada de basic antes, y a base de palos de ciego (ensayo-error, dicho finamente) he logrado lo que quería, pero seguro que sabiendo algo se tarda mucho menos tiempo. Creo que le voy a coger el gustillo a esto... (evidentemente la euforia me hace sentir como Neo ahora mismo; imagino que perderá fuerza conforme pase tiempo sin necesitar crear nuevas bases)
de nuevo, muchas gracias.
Un saludo.
PD: no se si será de utilidad (a mí me han servido otros ejemplos), pero si lo es, subiré mi base encantado. Lo único que me dice que no puedo porque es muy grande. Me pareció raro, pero bueno.

Re: formulario para entrada de datos

Publicado: Lun Mar 26, 2018 5:17 pm
por PepeOooSevilla
Hola.
Saludos cordiales.

Re: [RESUELTO] formulario para entrada de datos

Publicado: Jue Mar 29, 2018 10:57 am
por JAVIPEINA
Saludos.
Tengo una nueva cuestión que no se si está relacionada con este tema, creo que sí:
La cuestión es que he conseguido gracias a vuestra ayuda tener los formularios tal como los quería: dos formularios diferentes para entradas y salidas de material de quirófano, y funciona sin problemas. La única pega es que, como tengo las tablas ocultas para evitar modificaciones erróneas, no se puede confirmar, por parte de quien introduce los datos, qué tipo de material se está introduciendo, dado que el único campo del formulario es el código de barras que se introduce con un lector. Me gustaría introducir un campo tipo etiqueta que identifique el código de barras introducido en el campo correspondiente y muestre qué tipo de producto se introduce en la base, sin introducir nada en ninguna celda, solo a modo de control por parte del que lee el código de barras.
No se si es posible, y me resulta complicado realizar una búsqueda acerca del tema.
Muchas gracias por vuestra ayuda.

Re: [RESUELTO] formulario para entrada de datos

Publicado: Sab Mar 31, 2018 8:03 am
por PepeOooSevilla
Hola.
Por favor, ayúdanos a mantener este foro ordenado:
  • Un problema por mensaje y un mensaje por cada problema. Si no has podido leer aún la Guía de supervivencia, este es un buen momento.
  • 2º Si un tema está [RESUELTO] debes abrir un nuevo tema para una nueva pregunta. Si tiene que ver con un tema anterior entonces haz referencia a él en tu nueva pregunta.
  • 3º Si se adjunta un archivo con el problema/error/incidencia/consulta/... (por favor, sin datos personales, que este es un foro público) aumenta, y mucho, las posibilidades de conseguir una respuesta adecuada. Ver Cómo adjuntar un archivo a este sitio. Hay que tener muy en cuenta que:
    Los voluntarios del foro no siempre tenemos tiempo para, partiendo de cero, crear un archivo que, al final, no se corresponderá exactamente con el problema planteado.
Y después de estos párrafos de obligada lectura ... ¿Podrías subir un archivo de ejemplo?
Saludos cordiales.

Re: [RESUELTO] formulario para entrada de datos

Publicado: Mar Abr 03, 2018 2:00 pm
por JAVIPEINA
Lo siento, tienes toda la razón. Si te parece, lo que hago es empezar bien directamente, para no perpetuar el error.
Dejo este como resuelto, y abro otro con el problema que planteo.
Muchas gracias y perdón.