Programación General > Visual Basic para principiantes

 No Me Encuentra La Tabla

(1/1)

iratxe:
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:

--- 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
     .
     .
     .
     
--- Fin de la cita ---

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 ---  Set rs1 = DB.OpenRecordset(&#34;SElect distinct Tema from nomTabla &#34;, dbOpenDynaset) 

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


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

--- Código: Text --- 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 = &#34;cd&#34;) Then        'abrir una tabla         Set rs1 = Db.OpenRecordset(&#34;Select distinct Tema from &#34; & nomTabla, dbOpenDynaset)         ' Comprobar que hay datos en el recordset         With rs1             If (.BOF And .EOF) Then                MsgBox &#34;No se han encontrado los datos buscados&#34;             Else                'Añadir el resultado a un combo                cmbTema.Clear                .MoveFirst                 Do Until .EOF                     cmbTema.AddItem rs1(&#34;Tema&#34;)                     .MoveNext                 Loop              End If              .Close         End With    End IfNext cant_tablas  

Utiliza las etiquetas [CODE] para que tu codigo sea mas entendible
Saludos

iratxe:
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:
Falta el espacio antes del where  :hola:

Navegación

[0] Índice de Mensajes

Ir a la versión completa