Visual Basic - Problemas con Inner Join

Life is soft - evento anual de software empresarial
 
Vista:

Problemas con Inner Join

Publicado por Jorge (8 intervenciones) el 01/05/2008 20:14:48
Que tal, vengo aqui con este pequeño problema a ver si alguien me puede dar una mano:

La cosa es la siguiente, estoy utilizando un Inner Join para evaluar coincidencias en dos tablas, si existen coincidencias el programa arroja un resultado, si no existen coincidencias arroja otro. Esto es lo que con mi recortados conocimientos en SQL y VB6 he echo:

Set rs = Bd.OpenRecordset("Select Empresas.*, Carga_Polizas.* FROM Empresas INNER JOIN Carga_Polizas on Carga_Polizas.Id_Empresa = Empresas.Id_Empresa")

If Not rs.EOF Then
MsgBox "Imposible elimiar el registro, existen subregistros asociados a este, elimine primero los registros asociados y luego elimine el registro principal", vbInformation, "Mensaje del Sistema"
Exit Sub
End If

El problema es que el RecordSet siempre devuelve algo, no se si en estos casos se deba usar el EOF o algun otro condicional para determinar si se devolvió o no algo, alguien me podría ayudar con esto?? de antemano muchas gracias.

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problemas con Inner Join

Publicado por Matías Freire (421 intervenciones) el 05/05/2008 19:16:37
Básicamente siempre te va a traer registros, porque te va a traer los registros de todas las empresas...

lo que te está faltando es el filtro de qué empresa es la que querés que se elimine ejemplo:

SELECT Empresas.*,
Carga_Polizas.*

FROM Empresas INNER JOIN Carga_Polizas
ON Carga_Polizas.Id_Empresa = Empresas.Id_Empresa

WHERE Empresas.Id_Empresa = CodigoEmpresa


De todas formas, hjacer un INNER JOIN sólo para verificar si existen o no registros de una empresa en la tabla de pólizas sería un desperdicio.

con sólo hacer un

SELECT COUNT(*) FROM Carga_Polizas WHERE Id_Empresa = CodigoEmpresa

ya te alcanzaría. El "SELECT COUNT(*)" te cuenta cuántos registros coinciden con la condición que pusiste en el WHERE. Por lo tanto, tendrías que hacer:


Set rs = Bd.OpenRecordset("SELECT COUNT(*) FROM Carga_Polizas WHERE Id_Empresa =" & CodigoEmpresa)

'Siempre devuelve un registro con un solo campo (el campo 0) en donde tenes
'la cantidad de filas que coinciden con lo que pusiste en el WHERE.
If rs(0) > 0 Then
MsgBox "Imposible elimiar el registro, existen subregistros asociados a
este, elimine primero los registros asociados y luego elimine el
registro principal", vbInformation, "Mensaje del Sistema"
Exit Sub
End If

Cualquier duda mandame un mail

Saludos!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con Inner Join

Publicado por Jorge (8 intervenciones) el 07/05/2008 01:42:01
Excelnte tu respuesta Matias, agradecido enormemente por la ayuda. Me ha funcionado perfectamente y sin mayores inconvenientes.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar