Pregunta: | 4502 - DETERMINAR LAS TABLAS EN ADO |
Autor: | Santiago Franchi |
Estoy programando un DLL en VB para usarlo como servidor remoto en una aplicación que crearé posteriormente; pero para poder programarlo eficientemente, necesito saber la cantidad de tablas que hay en la base de datos. En DAO se puede usar la colección TableDefs, pero en ADO, no se cómo determinar este valor. Si alguien puede decirme alguna función, colección o cualquier otro medio para determinar este valor, desde ya muchísimas gracias. |
Respuesta: | Alberto |
En principio es el propio SGBD el que tiene la información sobre las tablas existentes en la Base de Datos y normalmente estarán guardadas en tablas del sistema por lo que deberemos acceder a ellas mediante consultas SQL, por ejemplo en ACCESS la consulta: SELECT Name FROM msysobjects WHERE type=1 AND (flags=0 OR flags=8); nos devuelve el nombre de las tablas de usuario aunque esten ocultas, si quitamos la segunda condición (flags=0 OR flags=8) nos devolverá todas las tablas, incluidas las de sistema. Dependiendo del SGBD la tabla y las condiciones de la consulta serán diferentes, es más, puede que la consulta ya este creada por el sistema. |
Respuesta: | Ubeimar Alonso Vergara Gallo |
Dim RS As ADODB.Recordset Set RS = Conexion.OpenSchema(adSchemaTables) Esto te devuelve un RecordSet con todas las tablas, incluidas las del sistema. Si solo deseas contar tus tablas: Do Until RS.EOF If UCase(RS!TABLE_TYPE) = "TABLE" Then NroTablas = NroTablas + 1 End If .MoveNext Loop Estoy seguro que con eso funciona... Mucha Suerte !!! Ubeimar Vergara |