• Lunes 13 de Mayo de 2024, 02:49

Autor Tema:  No Me Encuentra La Tabla  (Leído 1337 veces)

iratxe

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
No Me Encuentra La Tabla
« en: Sábado 14 de Julio de 2007, 20:10 »
0
Hola de nuevo:

Ahora tengo otro problemilla, si alguien me podria ayyudar de nuevo se lo agradeceria mucho.

El problema me da aqui:
et rs1 = DB.OpenRecordset("SElect distinct Tema from nomTabla ", dbOpenDynaset)

nomTabla lo he conseguido asi:
nomTabla = DB.TableDefs(cant_tablas).Name
ya que solo tengo que realizar operaciones en aquellas tablas dentro de la base de datos que empiecen por cd.

Os pongo el codigo que he escrito por si lo necesitais, muchisimas gracias por ayudarme.

For cant_tablas = 0 To DB.TableDefs.Count - 1
    nomTabla = DB.TableDefs(cant_tablas).Name
    nomCD = Mid(nomTabla, 1, 2) 'miramos si el nombre de la tabla empieza por cd
    If (nomCD <> "cd") Then
         cant_tablas = cant_tablas + 1
     Else
     
        'abrir una tabla
        Set rs1 = DB.OpenRecordset("SElect distinct Tema from nomTabla ", dbOpenDynaset)
         ' Comprobar que hay datos en el recordset
        With rs1
            If (.BOF And .EOF) Then
                MsgBox "No se han encontrado los datos buscados"
            Else
                'Añadir el resultado a un combo
                cmbTema.Clear
                rs1.MoveFirst
                Do Until rs1.EOF
                    cmbTema.AddItem rs1("Tema")
                    rs1.MoveNext
                Loop
            End If
            rs1.Close
        End With
    End If
    Next cant_tablas

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: No Me Encuentra La Tabla
« Respuesta #1 en: Sábado 14 de Julio de 2007, 22:53 »
0
Cita de: "iratxe"

For cant_tablas = 0 To DB.TableDefs.Count - 1
    nomTabla = DB.TableDefs(cant_tablas).Name
    nomCD = Mid(nomTabla, 1, 2) 'miramos si el nombre de la tabla empieza por cd
    If (nomCD <> "cd") Then
            cant_tablas = cant_tablas + 1
     Else
     .
     .
     .
     

Hola , mira en ese codigo la variable de control del ciclo cant_tablas se afecta  sola por el mismo ciclo, no es necesario que la incrementes incluso eso ocaciona problemas.

Ahora lo que haces en el If es buscar si el nombre inicia con "cd" para acumularlo lo cual no te indica cual tabla es

solo tienes que tomar cant_tablas segun en la que vaya el ciclo y la linea

Código: Text
  1.  
  2.  Set rs1 = DB.OpenRecordset(&#34;SElect distinct Tema from nomTabla &#34;, dbOpenDynaset)
  3.  


El nombre de la tabla debe estar fuera de la cadena pues es una variable

Código: Text
  1.  Set rs1 = DB.OpenRecordset(&#34;Select distinct Tema from &#34; & nomTabla , dbOpenDynaset)
  2.  

Código: Text
  1.  
  2. For cant_tablas = 0 To Db.TableDefs.Count - 1
  3.     nomTabla = Db.TableDefs(cant_tablas).Name
  4.     nomCD = Mid(nomTabla, 1, 2) 'miramos si el nombre de la tabla empieza por cd
  5.        
  6.     If (nomCD = &#34;cd&#34;) Then
  7.         'abrir una tabla
  8.          Set rs1 = Db.OpenRecordset(&#34;Select distinct Tema from &#34; & nomTabla, dbOpenDynaset)
  9.          ' Comprobar que hay datos en el recordset
  10.          With rs1
  11.              If (.BOF And .EOF) Then
  12.                 MsgBox &#34;No se han encontrado los datos buscados&#34;
  13.              Else
  14.                 'Añadir el resultado a un combo
  15.                 cmbTema.Clear
  16.                 .MoveFirst
  17.                  Do Until .EOF
  18.                      cmbTema.AddItem rs1(&#34;Tema&#34;)
  19.                      .MoveNext
  20.                  Loop
  21.               End If
  22.               .Close
  23.          End With
  24.     End If
  25. Next cant_tablas
  26.  
  27.  


Utiliza las etiquetas [CODE] para que tu codigo sea mas entendible
Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

iratxe

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: No Me Encuentra La Tabla
« Respuesta #2 en: Domingo 15 de Julio de 2007, 15:48 »
0
vale muchas gracias, ahora ya me va, pero tengo una duda, si en la select pongo un where porque da error? me da error de sintaxis en la clausula from.

No esta bien escrito? muchisimas gracias por todo

Set rs2 = DB.OpenRecordset("SELECT distinct Subtema from " & nomTabla & "where Tema ='" & cmbTema.Text & "'", dbOpenDynaset)

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: No Me Encuentra La Tabla
« Respuesta #3 en: Domingo 15 de Julio de 2007, 16:06 »
0
Falta el espacio antes del where  :hola:
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.