Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Visual Basic clásico (http://www.forosdelweb.com/f69/)
-   -   Comparar campos de tablas urgente (http://www.forosdelweb.com/f69/comparar-campos-tablas-urgente-460643/)

Frehley 30/01/2007 08:06

Comparar campos de tablas urgente
 
Gente, a ver si pueden ayudarme con esto:

Tengo la tabla TBL_Cursos y TBL_Informes_Cursos


En TBL_Informes_Cursos tengo los campos CursoID y Fecha
En Cursos temgp CursoID, num_cur y Inicia

Necesito hacer una busqueda de cada CursoID que hallla en TBL_Cursos y fijarme si ese CursoID està tambien en TBL_Informes_Cursos. Si lo encuentra entonces que siga, si no lo encuentra entonces que haga un Insert Into TBL_Informes_Cursos de ese CursoID y la Fecha.

Muchas gracias!

tazzito 30/01/2007 08:33

Re: Comparar campos de tablas urgente
 
imagino que lo que necesitas es una instruccion como esta, te explico un poco, hace un insert en cursoID por cada cursoID de la tabla cursos que en union a la tabla informes cursos tenga el campo cursoid de esta ultima en nullo (esto quiere decir que no esta), espero haberte ayudado.

insert into TBL_Informes_Cursos(cursoID) select Distinct CursoID from TBL_Cursos as C Left Join TBL_Informes_Cursos as IC ON C.CursoID = IC.CursoID where IC.CursoID is Null

Frehley 30/01/2007 08:45

Re: Comparar campos de tablas urgente
 
Te agradesco la ayuda pero la verdad qu estoy un poco mas mareado que antes. Yo lo qe tengo hasta ahora es esto, pero todavia no funciona:

Dim x As Boolean
Dim strSQL1 As String
Dim strSQL2 As String
Dim rs1 As ADODB.Recordset
Dim rs2 As ADODB.Recordset
On Error GoTo noesta
x = Conectar(cn, App.Path, "ADM Sin actualizar")

strSQL1 = "Select * From TBL_Cursos"
Set rs1 = cn.Execute(strSQL1)
strSQL2 = "Select * From TBL_Informes_Cursos Where CursoID = " & rs1!CursoID

For i = 0 To 120
Set rs2 = cn.Execute(strSQL2)
If rs2!CursoID = rs1!CursoID Then rs1.MoveNext
Next i
MsgBox "listo"
x = Desconectar(cn)

Exit Sub
noesta:
If Err.Number = 3021 Then cn.Execute ("Insert Into TBL_informes_Cursos (CursoID, Fecha, SemanaID) Values (" & rs1!CursoID & ", " & rs1!Inicia & ", " & 0 & ")")
rs1.MoveNext



x = Conectar(cn, App.Path, "ADM Sin actualizar") es mi dll de coneccion

Espero que me puedan audar >_<

Muchas gracias!

tazzito 30/01/2007 08:54

Re: Comparar campos de tablas urgente
 
no entiendo mucho tu logica, veamos primero veo que asignas directamente a strSQL2 un valor, el cual no modificas en todo el codigo, segundo recorres desde 0 a 120 y no se por que, tercero, si no esta te caes vas a noesta: y si el numero de error es 3021 agregas un registro a tbl_informes_cursos pero no devuelves arriba el cursor por lo que imagno que con suerte te agrega uno en ese momento y finaliza el proceso... el codigo que yo te envie es una consulta que busca todos los cursosID que no esten de una tabla a otra y los inserta en la que no estan.... si tienes mas dudas por MP te deje mi mail para que me hagas las preguntas correspondientes.

Frehley 30/01/2007 08:56

Re: Comparar campos de tablas urgente
 
Algunos de los errores que me marcaste ya los tengo corregidos. Ya te envie el pm.

Muchas gracias!

tazzito 30/01/2007 08:58

Re: Comparar campos de tablas urgente
 
ok amigo no hay problema ;)

Frehley 30/01/2007 09:01

Re: Comparar campos de tablas urgente
 
Estoy revisando y me parece que ya lo solucionè el unico problema s que aunque haga format la fecha me la pone mal =/, voy a verlo mas detenidamente cuando llegue a mi casa y aviso.

Muchas gracias!

Frehley 30/01/2007 09:26

Re: Comparar campos de tablas urgente
 
Dim x As Boolean
Dim strSQL1 As String
Dim strSQL2 As String
Dim rs1 As ADODB.Recordset
Dim rs2 As ADODB.Recordset

x = Conectar(cn, App.Path, "ADM Sin actualizar")

strSQL1 = "Select * From TBL_Cursos"
Set rs1 = cn.Execute(strSQL1)


While Not rs1.EOF
strSQL2 = "Select * From TBL_Informes_Cursos Where CursoID = " & rs1!CursoID
Set rs2 = cn.Execute(strSQL2)
If rs2.RecordCount <= 0 Then cn.Execute ("Insert Into TBL_informes_Cursos (CursoID, Fecha, SemanaID) Values (" & rs1!CursoID & ", " & format(rs1!Inicia,"dd/mm/yyyy") & ", " & 0 & ")")
rs1.MoveNext
Wend
MsgBox "listo"
x = Desconectar(cn)


La zona horaria es GMT -6. Ahora son las 20:51.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.