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

Problemas con una sentencia SQL en VB 6.0

Estas en el tema de Problemas con una sentencia SQL en VB 6.0 en el foro de Visual Basic clásico en Foros del Web. Hola Chicos y Chicas.... Ando molesta, porque me esta pasando algo en VB 6.0 que no encuentro logico... Les cuento de que se trata... tengo ...
  #1 (permalink)  
Antiguo 12/03/2009, 20:05
 
Fecha de Ingreso: febrero-2009
Mensajes: 101
Antigüedad: 15 años, 2 meses
Puntos: 0
Problemas con una sentencia SQL en VB 6.0

Hola Chicos y Chicas....
Ando molesta, porque me esta pasando algo en VB 6.0 que no encuentro logico... Les cuento de que se trata...

tengo una tabla llamada tabla_departamento que tiene una recursividad...
entonces la escructura de mi tabla quedo asi:

CREATE TABLE `tabla_departamento` (
`id_departamento` varchar(15) NOT NULL default '',
`nom_departamento` varchar(100) default NULL,
`dir_departamento` varchar(100) default NULL,
`descr_departamento` varchar(100) default NULL,
`dpto_id_departamento` varchar(15) default NULL,
PRIMARY KEY (`id_departamento`),
KEY `dpto_id_departamento` (`dpto_id_departamento`),
CONSTRAINT `tabla_departamento_ibfk_1` FOREIGN KEY (`dpto_id_departamento`) REFERENCES `tabla_departamento` (`id_departamento`)
) TYPE=InnoDB

Nota: la bd esta en MySQL

Ok... y luego kiero mostrar los departamentos con su direccion general... Es decir

id_dpto nombre_dpto id_direccion nombre_direccion
DPTO-10 Coor. Informatica DIR-01 Dir. Administracion
DPTO-07 Jefe de Museo DIR-02 Dir. Cultura
DIR-01 Dir.Administracion DIR-01 Dir.Administracion

y el query que hice para lograrlo fue este:

SELECT tabla_direccion.id_departamento,
tabla_direccion.nom_departamento,
tabla_departamento.id_departamento,
tabla_departamento.nom_departamento

FROM tabla_departamento,
tabla_departamento tabla_direccion

WHERE tabla_departamento.dpto_id_departamento=tabla_dire ccion.id_departamento;


Y de hecho me lo hace... y si se fijan en que la Dir. Administracion tiene como supervisor a ella misma ... es porque como no puedo dejar campos nulos le asigne su misma direccion....

Y bueno hasta aca todo chevere... pero resulta que cuando kiero cargar esa misma informacion de mi aplicacion de VB 6.0 me arreja la informacion errada... algo como esto:

id_dpto nombre_dpto id_direccion nombre_direccion
DPTO-10 Coor. Informatica DPTO-10 Coor. Informatica
DPTO-07 Jefe de Museo DPTO-07 Jefe de Museo
DIR-01 Dir.Administracion DIR-01 Dir.Administracion

en tal caso lo unico que estaria bien es la info que me arroja de las direcciones... y asi es como lo cargo en VB 6.0:

Private Sub form_load()
BD.conectarBD
Set Record = Conexion.Execute

("SELECT tabla_direccion.id_departamento,
tabla_direccion.nom_departamento,
tabla_departamento.id_departamento,
tabla_departamento.nom_departamento

FROM tabla_departamento,
tabla_departamento tabla_direccion

WHERE
tabla_departamento.dpto_id_departamento=tabla_dire ccion.id_departamento")


If Record.EOF = False Then
TextCodigo.Text = CStr(Record.Fields("id_departamento").Value)
TextNombre.Text = CStr(Record.Fields("nom_departamento").Value)
TextDireccion.Text = CStr(Record.Fields("dir_departamento").Value)
TextDescripcion.Text = CStr(Record.Fields("descr_departamento").Value)
TextIdDireccionGral.Text = CStr(Record.Fields("id_departamento").Value)
TextDireccionGral.Text = CStr(Record.Fields("nom_departamento").Value)
End If
End Sub

El select lo hago en una sola linea... pero se los coloque asi para que lo puedan ver bien

entonces... no se que ocurre... estoy llamando a los campos adecuados y el orden... pero no se que ocurre... porfa si pueden hecharme una mano seria de gran ayuda....

Gracias
  #2 (permalink)  
Antiguo 13/03/2009, 04:20
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Problemas con una sentencia SQL en VB 6.0

Hola, el problema es que estás agrupando campos de diferentes tablas que tienen el mismo nombre y el recordset no sabe cual de ellos quieres mostrar. Para solucionarlo, tienes que anteponer al nombre del campo, el nombre de la tabla.


En un principio, la consulta estaría bien así:

"SELECT tabla_direccion.id_departamento, " & _
"tabla_direccion.nom_departamento, " & _
"tabla_departamento.id_departamento, " & _
"tabla_departamento.nom_departamento " & _
"FROM tabla_departamento, tabla_direccion " & _
"Where tabla_departamento.dpto_id_departamento=tabla_direccion.id_departamento"


y para mostrar los datos (no es necesario convertirlos a cadena):

Código vb:
Ver original
  1. TextCodigo.Text = Record("tabla_departamento.id_departamento")
  2. TextNombre.Text = Record("tabla_departamento.nom_departamento")
  3. 'TextDireccion.Text = Record("tabla_departamento.dir_departamento")
  4. 'TextDescripcion.Text = Record("tabla_departamento.descr_departamento")
  5. TextIdDireccionGral.Text = Record("tabla_direccion.id_departamento")
  6. TextDireccionGral.Text = Record("tabla_direccion.nom_departamento")

Nota: Las líneas comentadas es porque los campos no aparecen en la consulta.

De todas formas, sería mejor mostrar los datos en un control de tipo Grid, por si el recordset arrojara mas de un registro.

Saludos
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 07:01.