Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

pasar un formulario y sus controles a un procedimiento(casi lo de antes)

Estas en el tema de pasar un formulario y sus controles a un procedimiento(casi lo de antes) en el foro de Visual Basic clásico en Foros del Web. Hola a todo el mundo! hace un rato escribi este problema pero con una función tengo este código Call AltaEnBBDD(frmClientes, clientes) aqui me da el ...
  #1 (permalink)  
Antiguo 06/06/2008, 11:13
 
Fecha de Ingreso: noviembre-2007
Mensajes: 382
Antigüedad: 16 años, 5 meses
Puntos: 16
Busqueda [[Solucionado]]pasar un formulario y sus controles a un procedimiento

Hola a todo el mundo!
hace un rato escribi este problema pero con una función
tengo este código

Call AltaEnBBDD(frmClientes, clientes)
aqui me da el error, me dice:
el tipo de argumento de byRef no coincide

la funcion es esta (algun error tendra, que aun no la he podido probar, asi que no la mireis) :P

Public Sub AltaEnBBDD(ByVal formulario As Form, ByVal tabla As String)
Dim sentencia As String
Dim crtlControl As Control
sentencia = "Insert into " & tabla & " values('"
For Each crtlControl In formulario.Controls
If TypeOf crtlControl Is TextBox Then
sentencia = sentencia & crtlControl.Text & "', '"
'COMO CNTROLO LOS NUMEROS Y LAS LETRAS???????
End If
Next crtlControl
sentencia = Right(sentencia, 2)
sentencia = sentencia & "')"
MsgBox sentencia

Última edición por manzarinaa; 09/06/2008 a las 12:20 Razón: solucionado
  #2 (permalink)  
Antiguo 06/06/2008, 11:19
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: pasar un formulario y sus controles a un procedimiento(casi lo de antes)

Cita:
Iniciado por manzarinaa Ver Mensaje
Call AltaEnBBDD(frmClientes, clientes)
¿Dónde declaras la variable clientes?
Cita:
Iniciado por manzarinaa Ver Mensaje
Public Sub AltaEnBBDD(ByVal formulario As Form, ByVal tabla As String)
Debe ser ByRef
Cita:
Iniciado por manzarinaa Ver Mensaje
'COMO CNTROLO LOS NUMEROS Y LAS LETRAS???????
No etendí la pregunta...
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 06/06/2008, 11:28
 
Fecha de Ingreso: noviembre-2007
Mensajes: 382
Antigüedad: 16 años, 5 meses
Puntos: 16
Respuesta: pasar un formulario y sus controles a un procedimiento(casi lo de antes)

ni byVal ni byRef no se por qué.....
de lo de las letras y los numeros no lo mires que es un comentario para mi y una pregunta ya si eso para mañana (que hoy es viernes y ya apetece parar :P)
  #4 (permalink)  
Antiguo 06/06/2008, 11:36
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Pregunta Respuesta: pasar un formulario y sus controles a un procedimiento(casi lo de antes)

Cita:
Iniciado por David el Grande Ver Mensaje
¿Dónde declaras la variable clientes?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 09/06/2008, 11:10
 
Fecha de Ingreso: noviembre-2007
Mensajes: 382
Antigüedad: 16 años, 5 meses
Puntos: 16
Respuesta: pasar un formulario y sus controles a un procedimiento(casi lo de antes)

la declaro en un boton y si, entre comillas que se me habia escapado, es un string
el código es este
Private Sub cmdContinuar_Click()
Dim validado As Boolean
formulario As Form
validado = ValidarFormulario(frmPaginas)
formulario = frmClientes
Call AltaEnBBDD(frmClientes, "clientes")
Call AltaEnBBDD(frmPaginas, "paginas")
esto ya es en un módulo
Public Sub AltaEnBBDD(ByRef formulario As Form, tabla As String)
Dim sentencia As String
Dim crtlControl As Control
sentencia = "Insert into " & tabla & " values('"
For Each crtlControl In formulario.Controls
If TypeOf crtlControl Is TextBox Then
sentencia = sentencia & crtlControl.Text & "', '"
.
.
.
SOS!! no hay manera
La instruccion no es válida fuera de un bloque type
  #6 (permalink)  
Antiguo 09/06/2008, 11:26
Avatar de Txoco  
Fecha de Ingreso: junio-2008
Ubicación: Perdido en tierras Quijotescas
Mensajes: 189
Antigüedad: 15 años, 11 meses
Puntos: 7
Respuesta: pasar un formulario y sus controles a un procedimiento(casi lo de antes)

Hola!

El fallo del "bloque type" es porque debes preceder "formulario As Form" de la claúsula Dim, o el compilador no la interpretará como una definición de variable.

Aparte, la variable "formulario" es de un tipo objeto, por lo que no puedes asignarla de la forma normal; debes hacerlo así:

Código:
Set formulario = frmClientes
De todas formas, parece que no la necesitas, porque en la función AltaEnBBDD pasas directamente el formulario... el código parece correcto por lo demás, ¿sigues teniendo el error del argumento ByRef?
  #7 (permalink)  
Antiguo 09/06/2008, 11:31
 
Fecha de Ingreso: noviembre-2007
Mensajes: 382
Antigüedad: 16 años, 5 meses
Puntos: 16
Respuesta: pasar un formulario y sus controles a un procedimiento(casi lo de antes)

sisi me he dado cuenta luego iba a editarlo ahora...es que le di una de vueltas... :P
pero el error del byref sigue saliendo
  #8 (permalink)  
Antiguo 09/06/2008, 11:48
Avatar de Txoco  
Fecha de Ingreso: junio-2008
Ubicación: Perdido en tierras Quijotescas
Mensajes: 189
Antigüedad: 15 años, 11 meses
Puntos: 7
Respuesta: pasar un formulario y sus controles a un procedimiento(casi lo de antes)

mmmm... que extraño... pero que no panda el cúnico

Comprueba estas cosas:

- Que el nombre del formulario frmClientes está bien escrito.
- Que no tienes otra función AltaEnBBDD definida en alguna parte del proyecto.

Si todo está bien: comenta toodo el contenido de AltaEnBBDD, dejándola vacía, y pon una llamada a MsgBox con cualquier cosa, para ver si funciona. Si te sale el mensaje, seguimos buscando por ahí. Si no, prueba llamando a frmClientes.Show antes de llamar a AltaEnBBDD.

A ver si así localizamos exactamente dónde está el fallo
  #9 (permalink)  
Antiguo 09/06/2008, 11:58
 
Fecha de Ingreso: noviembre-2007
Mensajes: 382
Antigüedad: 16 años, 5 meses
Puntos: 16
Respuesta: pasar un formulario y sus controles a un procedimiento(casi lo de antes)

LA MADRE QUE ME PARIOOOO!!!!! QUE TONTERIA Y QUE DE HORAS
el nombre estaba mal escrito, el del formulario, pero mira a ver si ya que estas me puedes hacer el fabor... si no ya me lo voy mirando y pongo un post nuevo (es que voy contrareloj)
Ahora no me concatena

Public Sub AltaEnBBDD(ByRef formulario As Form, tabla As String)
Dim sentencia As String
Dim crtlControl As Control
sentencia = "Insert into " & tabla & " values('"
For Each crtlControl In formulario.Controls
If TypeOf crtlControl Is TextBox Then
sentencia = sentencia & crtlControl.Text & "', '"
End If
Next crtlControl
sentencia = Right(sentencia, 2)
sentencia = sentencia & "')"
MsgBox sentencia
  #10 (permalink)  
Antiguo 09/06/2008, 12:13
Avatar de Txoco  
Fecha de Ingreso: junio-2008
Ubicación: Perdido en tierras Quijotescas
Mensajes: 189
Antigüedad: 15 años, 11 meses
Puntos: 7
Respuesta: pasar un formulario y sus controles a un procedimiento(casi lo de antes)

Bueno, pasa en las mejores familias

Te recomiendo que pongas "Option Explicit" al principio de todos los módulos y formularios, así el compilador te obligará a declarar todas las variables que necesites y probablemente atajes esos problemillas.

Deduzco que lo que te está devolviendo es ")" a secas... sustituye Right(sentencia, 2) por Right(sentencia, Len(sentencia)-2), verás que así funciona
  #11 (permalink)  
Antiguo 09/06/2008, 12:17
 
Fecha de Ingreso: noviembre-2007
Mensajes: 382
Antigüedad: 16 años, 5 meses
Puntos: 16
Respuesta: pasar un formulario y sus controles a un procedimiento(casi lo de antes)

muchisimas gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:40.