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

Insert a una BD relacional

Estas en el tema de Insert a una BD relacional en el foro de Visual Basic clásico en Foros del Web. Hola a Todos tengo un problema con Visual basic, mas bien no es un problema si no que no se como se hace . Estoy ...
  #1 (permalink)  
Antiguo 31/05/2005, 12:20
Avatar de axy108  
Fecha de Ingreso: diciembre-2003
Ubicación: En frente de mi Computadora
Mensajes: 415
Antigüedad: 20 años, 4 meses
Puntos: 0
Insert a una BD relacional

Hola a Todos tengo un problema con Visual basic, mas bien no es un problema si no que no se como se hace .

Estoy realizando un sistema para la escuela de trabajo final y tengo una base de datos relacional con Access 2003, tengo dos tablas que son asi:

Pacientes: h_gineco:

id_paciente id_gineco
nombre...etc,etc id_paciente

como pueden ver estan relacionadas con el id_paciente, estoy realizando la conexion a access con ADO y la hace bien lo que pasa es que ahora tengo un formulario donde se piden datos del paciente, y si es mujer osea del sexo femenino se abren unos campos ocultos donde van los datos de la historicos gineco-obstetricos y no se como hacer que en la tablade h_gineco guarde el id_paciente que se genera automaticamente en la BD porque es autoincrement, si alguien me pudiera ayudar para decirme como se realiza o tenga un tutorial o manual se lo agradeceria, o si alguien sabe como puedo mandar una instruccion insert a la base de datos cuando el usuario pulse un boton se lo agradeceria mucho gracias.

SALUDOS.

PD: Espero me haya explicado y si no me avisan para que les pongo unos screenshots del sistema.
__________________
Todos somos muy ignorantes :pensando: . Lo que ocurre es que no todos ignoramos las mismas cosas ;-) .... Albert Einstein :cool:
  #2 (permalink)  
Antiguo 31/05/2005, 12:33
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Eje!!!! en un tema anterior yo puse el codigo para conectarse a una base de datos.

Entonces en el evento clic de el boton Guardar has un llamado a una funcion en un modulo. Aqui te pongo el codigo de una funcion para que te sirva de ejemplo. Lo que hago es llamar a la funcion abre_conexion, y empezar una transaccion, realizar dos updates y hacer el commit, si cualquiera de las dos sentencias sql falla se va por el Y: y hace el rollback y finalmente se cierra la conexion

Despues del begintrans puedes hacer los insert y updates que necesites...

Public Sub anula_comprobante_ingreso()
abre_conexion
On Error GoTo Y:

conexion.BeginTrans

sql = "update cab_ingreso set Nombre='ANULADA', Estado='A', Total='0' where id_cab_ingreso='" + frm_consulta_ing.txtNumero.Text + "'"
conexion.Execute sql

sql = "update det_ingreso set Total='0' where id_cab_ingreso='" + frm_consulta_ing.txtNumero.Text + "'"
conexion.Execute sql

conexion.CommitTrans
MsgBox "Comprobante de ingreso anulado correctamente", vbInformation

Y:
If Err.Number <> 0 Then
conexion.RollbackTrans
MsgBox Err.Description, vbCritical
End
End If
cierra_conexion
End Sub

Cualquier cosa avisas
  #3 (permalink)  
Antiguo 31/05/2005, 12:43
Avatar de axy108  
Fecha de Ingreso: diciembre-2003
Ubicación: En frente de mi Computadora
Mensajes: 415
Antigüedad: 20 años, 4 meses
Puntos: 0
Hola de nuevo mira mis conocimientos en VB son un poco escasos en cuanto a base de datos se refiere, la conexion al BD la estoy haciendo con el componente ADODC y por medio de el he sacado y metido datos a la Base, ahora que si me puedes poner tu codigo donde realizas la conexion con la base de datos podria examinarlo y ver que puedo aprender a todo el demas codigo si le entendi pero no se como conectarme a la BD de otra manera que no sea con ADODC o con el componente DATA,

me podrias decir como conectarme a access 2003 please????

__________________
Todos somos muy ignorantes :pensando: . Lo que ocurre es que no todos ignoramos las mismas cosas ;-) .... Albert Einstein :cool:
  #4 (permalink)  
Antiguo 31/05/2005, 12:49
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Eje!!! Claro... te puedes conectar con ADO creando un dsn a tu base.

Ahi te pongo el link de las funciones para abrir y cerrar conexiones y recordset

http://www.forosdelweb.com/f69/sql-server-vb-302117/
  #5 (permalink)  
Antiguo 31/05/2005, 13:13
Avatar de axy108  
Fecha de Ingreso: diciembre-2003
Ubicación: En frente de mi Computadora
Mensajes: 415
Antigüedad: 20 años, 4 meses
Puntos: 0
Hola de nuevo, ya hice el dsn a mi BD, y estoy haciendo un programa de prueba, agrego un modulo al programa, y puse las instrucciones que estan en el link que me mandates y me mando un error en esta linea:

Código:
Global conexion As ADODB.Connection
me dice que:

No se ha definido el tipo definido por el usuario.

No se si tenga que agregar un componente al formulario o que me este faltando me puedes ayudar

GRACIAS DE ANTEMANO
__________________
Todos somos muy ignorantes :pensando: . Lo que ocurre es que no todos ignoramos las mismas cosas ;-) .... Albert Einstein :cool:
  #6 (permalink)  
Antiguo 31/05/2005, 13:18
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Eje!!! Tienes que agregar dos referencias. Una para la variable conexion y otra para la variable registro.

No recuerdo bien los nombres!!!! Microsoft Data Object y Microsoft Data Recordset o algo asi
  #7 (permalink)  
Antiguo 01/06/2005, 12:44
Avatar de axy108  
Fecha de Ingreso: diciembre-2003
Ubicación: En frente de mi Computadora
Mensajes: 415
Antigüedad: 20 años, 4 meses
Puntos: 0
gracias developer9 despues de mucho sufrir lo logre ya logre conectarme a la BD he insertar en la tabla jeje

pero ahora tengo un problema como obtengo el id del ultimo registro que se inserto en la bd??????

ya lo intente de muchas maneras y no me sale me puedes ayudar?????

GRACIA SALUDOS

__________________
Todos somos muy ignorantes :pensando: . Lo que ocurre es que no todos ignoramos las mismas cosas ;-) .... Albert Einstein :cool:
  #8 (permalink)  
Antiguo 01/06/2005, 12:54
Avatar de reel  
Fecha de Ingreso: febrero-2004
Ubicación: Managua, Nicaragua
Mensajes: 496
Antigüedad: 20 años, 3 meses
Puntos: 1
Sonrisa

Se me ocurre que lo puede hacer así:

Código:
código previo
..................

rs.Addnew
'rs(0) no se hace nada porque es el campo autonúmerico
rs(1) = valor2
rs(3) = valor3
rs.Update

..................
resto de código
Depués del udapte el rs(0) se actulizará y tendrá el valor del id nuevo.

Con una consulta INSERT no se me ocurre una solución.

Saludes
__________________
Leer es Saber, REEL.
Mi Blog
  #9 (permalink)  
Antiguo 01/06/2005, 13:43
Avatar de axy108  
Fecha de Ingreso: diciembre-2003
Ubicación: En frente de mi Computadora
Mensajes: 415
Antigüedad: 20 años, 4 meses
Puntos: 0
Hola reel me funcion a la perfeccion la manera en la que me mencionas GRACIAS

tambien te digo que la manera en la que yo lo estaba haciendo con insert tambien se puede (un poco mas laborioso pero se puede) y lo que hago es que hago mi transaccion y cuando termina lo que hago es que abro un recordset con la tabla donde acabo de insertar y me voy al ultimo registro con moveLast y ahi obtengo el id del ultimo registro.

Muchas gracias por su ayuda

__________________
Todos somos muy ignorantes :pensando: . Lo que ocurre es que no todos ignoramos las mismas cosas ;-) .... Albert Einstein :cool:
  #10 (permalink)  
Antiguo 01/06/2005, 14:21
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Eje!!!! atenti que ya llegue... lo que yo hago para obtener el codigo siguiente es por medio de sql.

SELECT MAX(nombrecampo) WHERE tabla

luego a nombrecampo lo conviertes a entero y le sumas uno... asi tienes el codigo siguiente. Eso es mejor que hacer un select de toda la tabla y moverse al ultimo... imaginate si la tabla tiene un millon de registros... se hace mas lento
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 05:12.