Actualización y Delete de consulta con JOIN

Se me planteo el siguiente inconveniente. Tengo 2 Tablas en una BD .mdb:
Departamentos: IdDpto - DescripDpto
Artículos: CodArt - IdDpto - DescripART-.....
"Por departamentos hay muchos artículos"
Uso los Siguientes Controles:
DATAGRID enlazado a un ADODC con la siguiente consulta:
"SELECT Articulos.CodART, Articulos.DescripART, Departamentos.DescripDPTO, Articulos.ImporteART, Articulos.PorcIVA,Articulos.PorcDescART,Articulos.IdART, Articulos.IdDPTO FROM Departamentos INNER JOIN Articulos ON Departamentos.IdDPTO = Articulos.IdDPTO ORDER BY Articulos.CodART"
Paso a describir los problemas:
1 -Cuando Actualizo el campo Artículos.IdDPTO Datagrid lo actualiza pero la información del campo Departamentos.DescripDPTO no es Actualizada (Me Muestra la celda vacía en el datagrid). ¿Lo recomendable es Hacer un REFRESH?, el REQUERY no me da Bolilla. Sobre el Objeto ADODC. Teniendo en cuenta que se trabajara con una gran cantidad de artículos.
2-NO me permite el Delete de dicho articulo (Información insuficiente de la clave ... Etc.), busque en Internet y me da que es por la cláusula JOIN que uso pero... La verdad necesito la Descripción del Departamento al que pertenece el Articulo.
Sepan disculpar lo extenso que fui pero quise explicar de la mejor manera la situación. Desde ya muchísimas gracias
Pablo Najar.

1 respuesta

Respuesta
1
Es cierto la clausula join...
Es el problema...
La instrucción que mencionas solo se debería utiliza para visualizar información... la ctualizaciones en suelen presentar resultados inesperados...
Para actualizar la tabla deberías capturar de alguna forma el id del producto y realiza las modificaciones dentro de una instrucción select simple(sin join, y de una tabla) claro esta con el registro elegido...
Para luego poder refrescar el datagrid... con los nuevos datos... y la instrucción correspondiente...
Suerte
Ante todo muchas gracias por tu interés, te hago una ultima consulta: ¿es un BUG? ¿Es decir en alguna version actual del MDAC se resolverá este problema?. Yo uso la version 2.5. Finalizando.. cuando quiera eliminar algún registro lo haré con un SQL directamente, y luego refrescar el ADODC y DATAGRID.. Desde ya muchísimas gracias.
Pablo N.
No es un Bug, así fue diseñado el SQL. Sobre todo por el tema de integridad de la información en una BD
El proceso de eliminación que sugiere es correcto.
Yo cargo la data que necesito en un recordset, luego hago todas la operaciones dentro del mismo. Me parece más seguro ya que no se hace ningún cambio en la bd hasta que no se ejcuta la orden update

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas