Pasar clave de un form a otra tabla

Agradecido; como siempre, a tus respuestas.
Aquí voy con otra consulta.
En el form de Voluntarios que estuvimos viendo tengo 3 checkBox, mediante los cuales, lo que hago es, que la hacer clic en uno de ellos se me muestra otro form, que corresponde a otra tabla en la cual quiero ingresar, por ejemplo a un socio, y que el cód de ese socio se ingrese en la tabla de Voluntarios.
Vale destacar que el campo código de la tabla de Socios está definida de tipo Identity con un incremento de 1. Igual que declaré el campo código de la tabla Voluntario.
Te paso lo que estoy haciendo a ver si me encuentras el error.
        If chkSocio.Value = 1 Then
            rstVoluntarios!NumSocio = rstSocios!NumSocio
            frmAltaSocio.Show
        End If
y... Además quiero mostrar el número de voluntario de este Socio en el text que tengo asignado para mostrar el número de voluntario que tiene este Socio.
Lo hago de esta forma y no anda.
Private Sub Form_Load()
Set rstVoluntarios = New ADODB.Recordset
With rstVoluntarios
    txtNumVolSocio.Text = .Fields("NumVoluntario")
End With
End Sub
Bueno amigo.

1 respuesta

Respuesta
1
Si te he entendido bien, lo que quieres es que al pinchar en el checkbox, se te abra un formulario nuevo donde quieres poner el mismo numero de voluntario que de socio.. ¿es algo así?... no te entendí muy bien.. lo siento.
Si es eso, lo que tienes que hacer es esto...
Primero, en el check ...
If chkSocio.Value = 1 Then
        frmAltaSocio.Show
End If
y luego en el FrmAltaSocio, en el form.Activate
Set rstVoluntarios = New ADODB.Recordset
With rstVoluntarios
    txtNumVolSocio.Text = frmVoluntarios.TxtNumSocio.text
End With
End Sub
Si te das cuenta lo que debes de hacer en el formulario que tiene los check, es poner el código que quieres traspasar al otro formulario en una caja de texto (si quieres oculta para que no se vea), y luego preguntas por ella en el otro formulario para cargarla en la
caja de texto de NumVolSocio... No se si me has entendido.. dímelo y espero que te funcione.
jaja. No, no es eso lo que te preguntaba. Eso hubiera sido fácil.
Mi problema es que no lo ingreso al NumVoluntario mediante un text, sino que lo genero de manera automática en la tabla directamente, con lo cual me genera el inconveniente de no saber como hacer para sacarlo de la tabla (a ese NumVoluntario, para ese socio).
El problema es que no quería ingresarlo a mano, sino que lo quería generar automáticamente.
No habrá alguna forma de poder hacer esto que te digo, ¿de una manera sencilla?
Gracias!
Me quedó una aclaración por hacerte.
En la tabla Voluntarios, además de la clave primaria NumVoluntario tengo un campo NumSocio, la cual es una clave externa de esta; pero que relaciona con la tabla Socio, esta clave la tengo declarada como para permitir valores nulos en la tabla Voluntarios, pero a su vez, lo que quiero hacer es dar la posibilidad de agregar al nuevo voluntario como Socio, el problema se presenta cuando, por ejemplo tengo ingresado unos cuantos Voluntarios, y el siguiente que ingreso lo quiero ingresar como Socio. Cómo hago para que sepa que núm de Voluntario es al que quiero ingresar como Socio.
Espero se haya entendido mi explicación y mi duda.
Saludos!
Pues sigo sin entender bien lo que quieres hacer. Solo se me ocurre que me envíes de alguna forma el código ... ¿puedes explicarme por encima de que es el programa y que relación hay entre los voluntarios y los socios?... a ver si consigo comprender que es lo que intentas hacer...
Osea que tienes dos tablas, una de voluntarios y otra de socios. En la tabla de voluntarios hay un campo que es el numsocio, que se relaciona con el numsocio de la tabla de socios.
Un voluntario puede o no ser un socio, por eso el id de socio en la tabla voluntarios no es obligatorio... ¿hasta ahí bien no?
Por lo que me dices... el problema ya creo que lo empiezo a entender. Cuando grabas un voluntario, el numero te lo da automáticamente el identity, y te hace falta ese numero para grabarlo en la tabla de socio.
Puedes intentar lo siguiente: (primero te lo explico con palabras)
- La idea es que cuando grabas, el registro nuevo es el ultimo, entonces deberías de irte al ultimo registro y recuperar el identity (numvoluntario) y guardártelo en una variable, que es la que usaras para grabar en la tabla de socios.
Si esto no te funciona, hazte algo así:
private function BuscaVoluntario (Nombre as string, Apellido as string) as integer
sql = "Select * from rstvoluntarios where Nombre = '" & Nombre & "' and Apellidos =
'" & apellidos "'"
rstregistros.Open sql,dbconexion
if rstregistros.eof = false then
     Buscavoluntario = rstregistro!NumeroVoluntario
endif
end function
De forma que busques en la tabla por los campos que sepas que siempre son distintos (te he puesto un pequeño ejemplo con Nombre y Apellidos, pero puedes usar otros campos que sepas que nunca se repiten (Documento de identificación, etc...)
No sé si me explico bien... ¿es esto lo que necesitas?
Gracias amigo. Creo que por ahí anda la cosa pero no logro entender.
Te paso las dos tablas a ver si me dices como hacer:
Tabla voluntarios:
    NumVoluntario
    NumSocio
    ApeVol
    NomVol
    FNacVol
    TipoDocumento
    NumDocumento
    DomicilioParticular
    TelefonoParticular
    Celular
    EMail
    Profesión
Tabla socios:
     NumSocio
     FechaInscSocio
     TipoContribucion
En ninguno de los dos forms tengo la clave de ningunos. Esas las voy a mostrar en un dbgrid o MsFlexGrid cuando quiera consultar la cantidad de Voluntarios o Socios con lo cual no tengo forma de sacar la clave de ningún text, sino que lo que me queda es sacarla directamente de la tabla.
Lo que quiero hacer en los forms:
Al hacer clic en el check del form de voluntarios: que me muestre el form de Socios (eso ya lo tengo resuelto), ahora: cuando le ingreso los datos al form de Socios, presiono en un botón guardar, y lo que quiero es que la clave que se me genera de manera automática en la tabla de Socios, se almacene en la tabla de Voluntarios.
Espero haber sido lo suficientemente claro, y que lo que quiero hacer no sea demasiado complicado.
Muchas gracias como siempre, y como siempre, espero tus magnificas respuestas!
Saludos!
Click en el check del form de Voluntarios, se me abre el form de
Bueno, espero me entiendas y me puedas ayudar. Muchas gracias!
Efectivamente, el problema lo tienes al grabar de socios, y ser en NumSocio un campo identity, no sabes su valor a no ser que lo consultes de alguna forma para grabarlo en la otra tabla.
Por los campos que tienes en la tabla de socios, ¿el campo fechaInscSocio es la fecha de grabación?... es decir.. ¿es automático? ¿Grabas el getdate() o fecha del sistema?
Te digo esto porque si es así, nada más grabar el socio, puedes hacer una consulta de este tipo:
Select Numsocio, FechaInscSocio from Socios order by FechaInscSocio DESC
De forma que el ultimo registro grabado sea el primero mostrado en la consulta.
Entonces haces lo siguiente:
if Recordset.Eof = False then
  NumeroSocioGrabado = recordset!NumSocio
  Recordset. Close
Endif
Y este NumeroSocioGrabado es el que usas en la siguiente consulta donde grabas la tabla de Voluntarios.
Hola amigo: Sí, el campo fechaInscSocio es la fecha en que se hizo socia la persona, para esto uso el DtaPicker, y lo que hago es almacenar el valor de este en la BD.
Igual, al final le voy a agregar un form en el que me muestre todos los datos del voluntario, y lo voy a gestionar desde allí.
Gracias de todos modos. Muy bueno el aporte!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas