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("SElect distinct Tema from nomTabla ", dbOpenDynaset)
El nombre de la tabla debe estar fuera de la cadena pues es una variable
--- Código: Text --- Set rs1 = DB.OpenRecordset("Select distinct Tema from " & 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 = "cd") Then '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 .MoveFirst Do Until .EOF cmbTema.AddItem rs1("Tema") .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
Ir a la versión completa