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

Agregar un registro a dos tablas al mismo tiempo

Estas en el tema de Agregar un registro a dos tablas al mismo tiempo en el foro de Visual Basic clásico en Foros del Web. Hola tengo un pequeño atoron, ahora quiero meter un registro en dos tablas diferentes, obiamente a cada una sus datos correspondientes, acontinuacion explico. Tengo dos ...
  #1 (permalink)  
Antiguo 14/10/2010, 02:05
Avatar de Gakex  
Fecha de Ingreso: enero-2009
Mensajes: 137
Antigüedad: 15 años, 3 meses
Puntos: 4
Pregunta Agregar un registro a dos tablas al mismo tiempo

Hola tengo un pequeño atoron, ahora quiero meter un registro en dos tablas diferentes, obiamente a cada una sus datos correspondientes, acontinuacion explico.

Tengo dos tablas clientes y cuentas, si el cliente ya existe en la base de datos, no deberia de haber problema simplemente se busca el id del cliente y se crea una nueva cuenta con relacion a ese id del cliente, pero si el cliente no existe tengo que agregar un nuevo registro con un nuevo cliente a la tabla Clientes y otro registro con una cuenta asociada al nuevo cliente en la tabla de Cuentas el detalle es que ya llevo un dia y no he logrado nada.

No estoy usando el adodc, estoy usando adodb con access 2003

ha despues de esto tengo que mandar a imprimir un resibo con los datos del cliente, el recibo ya esta diseñado es una plantilla que tengo que meter a la imresora y los datos del cliente tienen que caer en los lugares esactos, alguna sugenrecia??

Grasias por tomarse el tiempo de leer esto para ayudar.
  #2 (permalink)  
Antiguo 14/10/2010, 07:41
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 14 años, 7 meses
Puntos: 47
Respuesta: Agregar un registro a dos tablas al mismo tiempo

Hola!!
Hay que hacer las cosas paso a paso... Imagino que estas en la pantalla de crear cuentas, entonces..
1-Al hacer click en el boton nuevo debes hacer una consulta a la tabla de clientes por medio de un ID, el SQL seria asi mas o menos:
"SELECT * FROM TABLA_CLIENTES WHERE ID=" & TXTIDCLIENTE

2-Si no te trae datos, entonces pregunta:

IF MSGBOX ("Este Cliente no se encuentra, desea agregarlo?", vbyesno+vbquestion,vbinformation)=VBYES THEN
'Muestras la pantalla de crear clientes y asigna el ID que digitaste al campo ID de la pantalla de crear clientes
FRMCREACLIENTES.TXTIDCLIENTE=TXTIDCLIENTE

'Muestras la pantalla para guardar los demas datos
FRMCREACLIENTES.SHOW VBMODAL

'Como ya guardaste el cliente nuevo, entonces continua normal con la pantalla de crear cuentas...
END IF

Adapta la idea, nos cuentas!!!
  #3 (permalink)  
Antiguo 14/10/2010, 13:35
Avatar de Gakex  
Fecha de Ingreso: enero-2009
Mensajes: 137
Antigüedad: 15 años, 3 meses
Puntos: 4
Respuesta: Agregar un registro a dos tablas al mismo tiempo

Efectivamente es la ventana de alta de clientes tambien alta de cuentas, pero el id del cliente es autonumerico, es decir la base de datos lo asigna automatico, este id se escribe en la boleta de pago, junto con los datos del cliente, obiamente este dato id de cliente es el que permite relacionar la tabla de clientes con la de cuentas,

Bueno tengo pensado poner una cadena SQL con dos tablas

SQL = " SELECT * FROM Clientes, Cuentas, WERE id_cliente = idAcliente"

y despues el

RST.AddNew

otra opcion seria poner dos cadenas SQL una para cada tabla, pero cual es la mejor forma, y como hacer que funcione.
  #4 (permalink)  
Antiguo 14/10/2010, 17:30
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 14 años, 7 meses
Puntos: 47
Respuesta: Agregar un registro a dos tablas al mismo tiempo

El SQL que pusiste te puede dar un error en el WHERE, porque el campo ID_CLIENTE existe en ambas tablas... Como son 2 tablas yo haria 2 pantallas... me gustaria ver como es la pantalla de captura que tienes para tener mejor idea de como ayudarte... puedes poner un pantallazo?

Te recomiendo usar las sentencias SQL para insertar, eliminar, actualizar y seleccionar, el asunto de los RECORDSET.ADDNEW te va a ralentizar la aplicacion, si no me equivoco el ADDNEW se coloca al final de la tabla y luego inserta un registro nuevo vacio en espera de datos o que se cancele la operacion (si tienes muchos datos notarás la ralentizacion), si usas INSERT y lo ejecutas se hace mas directo y no espera a nadie

Usalo asi:
Como el ID_CLIENTE es autonumerico, puedes hacer un SELECT COUNT (*) AS TOTAL_REGISTROS FROM TABLA_CLIENTES, esto te traerá el total de clientes que tienes en la tabla... simplemente agregar 1 mas al total para el proximo registro... lo que hay que probar es si el campo autonumerico te va a permitir insertar el valor...

Código vb:
Ver original
  1. Conexion.execute "INSERT INTO TABLA_CLIENTES (ID_CLIENTE, NOMBRE_CLIENTE) VALUES (" &  RST!TOTAL_REGISTROS +1 & ",'GAKEX')"

Etiquetas: access, addnew, database, vb6
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 18:57.