Recordset (VB)

Realice lo que me indicaste una consulta utilizando INNER JOIN, los datos de las 4 tablas los muestra perfecto en mi formulario (si tenias razón uso frames por la gran cantidad de campos que tengo que visualizar en pantalla).
Pero ahora tengo insertar, eliminar, editar etc., los datos de mi base de datos, pero me aparece este error=
Error ' -2147467259 (80004005)' en tiempo de ejecución:
No se puede insertar ni actualizar columnas de tablas múltiples
para agregar un dato utilizo
recordset. Addnew
recordset. Update
alguna idea sobre esto?

1 Respuesta

Respuesta
1
Dime más o menos que tablas manejas con que campos para que me pueda idear alguna solución y te pueda apoyar.
Algo parecido me paso a mi, al actualizar mysql, pero ahorita escribiendo, me eh acordado de algo. Creo que tu utilizas sql server, y creo que la solución seria que no utilizaras la forma
recordset. update ni recordset. AddNew.
Para actualizar la información de esa forma es utilizando directamente la sentencia, es decir
conexión. open("Insert INTO tabla campo1 VALUE valor")
En otras palabras
utiliza inner join para consultas y insert into para actualizaciones.
Hola!
Si utilizo SQL server 7.0, y efectivamente la consulta que realizo es la siguiente:
recordset.Open "SELECT * FROM (asegurados INNER JOIN mediafiliacionaseg ON asegurados.Id_Asegurado = mediafiliacionaseg.Id_Media_Aseg)INNER JOIN pertenenciasaseg ON asegurados.Id_Asegurado = pertenenciasaseg.Id_Pertenencias_Aseg INNER JOIN visitaseg ON asegurados.Id_Asegurado = visitaseg.Id_Visita_Aseg", cn, adOpenDynamic, adLockOptimistic
Hasta aquí todo funciona muy bien, solo que ahora necesito actualizar las tablas con procesos como INSERT, UPDATE, DELETE
Me puse a investigar después de preguntarle, y también llegue a la conclusión que tenia que utilizar consultas de actualización.
**** ME EH DADO CUENTA QUE ESTO ESTA MAL******
INSERT INTO "SELECT * FROM asegurados,mediafiliacionaseg,pertenenciasaseg,visitaseg" (1)
WHERE (asegurados.Id_Asegurado = mediafiliacionaseg.Id_Media_Aseg, asegurados.Id_Asegurado = pertenenciasaseg.Id_Pertenencias_Aseg, asegurados.Id_Asegurado = visitaseg.Id_Visita_Aseg) (2)
(1) Nombre las tablas origen
(2) Nombre de los campos que deben tener relación
****************************************************
Ahora que me ha respondido me di cuenta de que no estoy realizando la consulta de actualiacion como se debe, si no que en vez de INNER JOIN, utilice INSERT INTO., así que lo voy a checar
Gracias por su ayuda.
Saludos
Hola! Sigo teniendo problemas con las consultas de actualización, me podrías ayudar por favor, en la pregunta anterior te envíe la consulta de selección con las tablas y campos claves que utilizo.
Muchas gracias...
Solo dime que error te marca o mandame la consulta de acutalizacion, para revisarla
Esta es la consulta que utilizo.
sql = "INSERT INTO asegurados (Id_Asegurado,Expediente)
values (aId_Asegurado,aExpediente)"
cn.Execute sql
sql("Id_Asegurado").Value = aId_Asegurado.Text
sql("Expediente").Value = aExpediente.Text
sql = "INSERT INTO mediafiliacion (Id_mediafiliacion,Expediente)
values (aId_mediafiliacion,acolor)"
cn.Execute sql
sql("Id_mediafiliacion ").Value = aId_Asegurado.Text
sql("color").Value = acolor.Text
sql = "INSERT INTO pertenencias (Id_pertenencia,mochila)
values (aId_pertenencia,amochila)"
cn.Execute sql
sql("Id_pertenencia ").Value = a Id_pertenencia.Text
sql("mochila").Value = aExpediente.Text
sql = "INSERT INTO visitas (Id_visita,nombre)
values (aId_visita,anombre)"
cn.Execute sql
sql("Id_visita ").Value = a Id_visita.Text
sql("nombre").Value = anombre.Text
Son 4 tablas diferentes en un solo formulario, cada tabla con 80 campos cada una. Lo que esta dentro de las comillas son los registros que tengo en la base de datos, y los .text los nombres de las cajas de texto en mi formulario, la relación entre las tablas es 1 a mucho, enlazados por el ID correspondiente de cada uno. El error que me marca es de comnpilacion, seguramente la sintaxis de la consulta no es la correcta, gracias por tu ayuda, saludos
Esta es la consulta que utilizo.
sql = "INSERT INTO asegurados (Id_Asegurado,Expediente)
values (aId_Asegurado,aExpediente)"
cn.Execute sql
sql("Id_Asegurado").Value = aId_Asegurado.Text
sql("Expediente").Value = aExpediente.Text
sql = "INSERT INTO mediafiliacion (Id_mediafiliacion,Expediente)
values (aId_mediafiliacion,acolor)"
cn.Execute sql
sql("Id_mediafiliacion ").Value = aId_Asegurado.Text
sql("color").Value = acolor.Text

sql = "INSERT INTO pertenencias (Id_pertenencia,mochila)
values (aId_pertenencia,amochila)"
cn.Execute sql
sql("Id_pertenencia ").Value = a Id_pertenencia.Text
sql("mochila").Value = aExpediente.Text

sql = "INSERT INTO visitas (Id_visita,nombre)
values (aId_visita,anombre)"
cn.Execute sql
sql("Id_visita ").Value = a Id_visita.Text
sql("nombre").Value = anombre.Text

----
Con toda sinceridad te digo que esta forma que pretendes hacer tus actualizaciones no la eh visto, a menos de que me equivoque pero lo que te puse en negritas, es incorrecto. Lo correcto es hacerlo como lo haces en las que no esta en negritas. Debe ser de esa forma.
y otra cosa , estas utilizando variables por lo que no es de esa forma.
seria mas o menos asi:
CAMPOS = "(CLAVE_ID,NOMBRE)"
VALORES = "(' " + txtClave + " ',' " + txtNombre +" ')"
sql = "INSERT INTO TABLA" + CAMPOS + " VALUES " + VALORES
cn.execute sql
Suerte y no dudes en consultar

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas