[RESUELTO] formulario para entrada de datos

Discute sobre la aplicación de hojas de cálculo
Responder
JAVIPEINA
Mensajes: 8
Registrado: Dom Mar 25, 2018 3:42 pm

[RESUELTO] formulario para entrada de datos

Mensaje 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.
Última edición por JAVIPEINA el Mar Mar 27, 2018 12:02 am, editado 1 vez en total.
apache Oppneoffice 4.1.5. MACOS HighSierra 10.13.3
JAVIPEINA
Mensajes: 8
Registrado: Dom Mar 25, 2018 3:42 pm

Re: formulario para entrada de datos

Mensaje 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...
apache Oppneoffice 4.1.5. MACOS HighSierra 10.13.3
JAVIPEINA
Mensajes: 8
Registrado: Dom Mar 25, 2018 3:42 pm

Re: formulario para entrada de datos

Mensaje 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
apache Oppneoffice 4.1.5. MACOS HighSierra 10.13.3
JAVIPEINA
Mensajes: 8
Registrado: Dom Mar 25, 2018 3:42 pm

Re: formulario para entrada de datos

Mensaje 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.
apache Oppneoffice 4.1.5. MACOS HighSierra 10.13.3
Avatar de Usuario
PepeOooSevilla
Mensajes: 1480
Registrado: Sab Abr 04, 2009 6:10 pm
Ubicación: Sevilla (España)

Re: formulario para entrada de datos

Mensaje 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.
LibreOffice 6.4.6. Windows 10. Java 8 rev. 261 (64 bits)
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.
JAVIPEINA
Mensajes: 8
Registrado: Dom Mar 25, 2018 3:42 pm

Re: formulario para entrada de datos

Mensaje 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.
apache Oppneoffice 4.1.5. MACOS HighSierra 10.13.3
Avatar de Usuario
PepeOooSevilla
Mensajes: 1480
Registrado: Sab Abr 04, 2009 6:10 pm
Ubicación: Sevilla (España)

Re: formulario para entrada de datos

Mensaje por PepeOooSevilla »

Hola.
Saludos cordiales.
LibreOffice 6.4.6. Windows 10. Java 8 rev. 261 (64 bits)
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.
JAVIPEINA
Mensajes: 8
Registrado: Dom Mar 25, 2018 3:42 pm

Re: [RESUELTO] formulario para entrada de datos

Mensaje 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.
apache Oppneoffice 4.1.5. MACOS HighSierra 10.13.3
Avatar de Usuario
PepeOooSevilla
Mensajes: 1480
Registrado: Sab Abr 04, 2009 6:10 pm
Ubicación: Sevilla (España)

Re: [RESUELTO] formulario para entrada de datos

Mensaje 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.
LibreOffice 6.4.6. Windows 10. Java 8 rev. 261 (64 bits)
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.
JAVIPEINA
Mensajes: 8
Registrado: Dom Mar 25, 2018 3:42 pm

Re: [RESUELTO] formulario para entrada de datos

Mensaje 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.
apache Oppneoffice 4.1.5. MACOS HighSierra 10.13.3
Responder