ODBC
Publicado por Armando (1 intervención) el 29/05/2007 11:44:34
Tengo este código para abrir una BD de Access y listar sus tablas, con sus columnas, etc.
integer li_rc, li_tab_index, li_tab_count, li_col_index, li_col_count, li_attributes
long ll_row
string ls_tablename, ls_columnname, ls_pathname, ls_filename
oleobject ole_connection, ole_catalog, ole_table, ole_column
li_rc = GetFileOpenName ( "Select Access database", ls_pathname, ls_filename, 'mdb', 'Access Database (*.mdb),*.mdb,All Files (*.*),*.*' )
IF li_rc < 1 THEN Return
ole_connection = CREATE oleobject
li_rc = ole_connection.ConnectToNewObject ( "ADODB.Connection" )
ole_catalog = CREATE oleobject
li_rc = ole_catalog.ConnectToNewObject ( "ADOX.Catalog" )
ole_table = CREATE oleobject
li_rc = ole_table.ConnectToNewObject ( "ADOX.Table" )
ole_column = CREATE oleobject
li_rc = ole_column.ConnectToNewObject ( "ADOX.Column" )
ole_connection.Open ( "Provider=Microsoft.Jet.OLEDB.4.0;data source=" + ls_pathname )
ole_catalog.ActiveConnection = ole_connection
dw_1.Reset()
li_tab_count = ole_catalog.Tables.Count
FOR li_tab_index = 0 TO li_tab_count - 1
ole_table = ole_catalog.Tables[li_tab_index]
ls_tablename = ole_table.Name
li_col_count = ole_table.Columns.Count
FOR li_col_index = 0 TO li_col_count - 1
ole_column = ole_table.Columns[li_col_index]
ls_columnname = ole_column.Name
li_attributes = ole_column.Attributes
ll_row = dw_1.InsertRow ( 0 )
dw_1.object.table_name[ll_row] = ls_tablename
dw_1.object.column_name[ll_row] = ls_columnname
CHOOSE CASE li_attributes
CASE 1
dw_1.object.fixed_width[ll_row] = 'Y'
CASE 2
dw_1.object.nullable[ll_row] = 'Y'
CASE 3
dw_1.object.fixed_width[ll_row] = 'Y'
dw_1.object.nullable[ll_row] = 'Y'
END CHOOSE
NEXT
NEXT
ole_connection.DisconnectObject( )
Destroy ole_table
Destroy ole_catalog
Destroy ole_connection
Pero esto lo que hace es abrir el archivo de access directamente, a mi lo que me interesa es abrirlo mediante ODBD. ¿Cómo debería hacerlo? Muxas gracias
integer li_rc, li_tab_index, li_tab_count, li_col_index, li_col_count, li_attributes
long ll_row
string ls_tablename, ls_columnname, ls_pathname, ls_filename
oleobject ole_connection, ole_catalog, ole_table, ole_column
li_rc = GetFileOpenName ( "Select Access database", ls_pathname, ls_filename, 'mdb', 'Access Database (*.mdb),*.mdb,All Files (*.*),*.*' )
IF li_rc < 1 THEN Return
ole_connection = CREATE oleobject
li_rc = ole_connection.ConnectToNewObject ( "ADODB.Connection" )
ole_catalog = CREATE oleobject
li_rc = ole_catalog.ConnectToNewObject ( "ADOX.Catalog" )
ole_table = CREATE oleobject
li_rc = ole_table.ConnectToNewObject ( "ADOX.Table" )
ole_column = CREATE oleobject
li_rc = ole_column.ConnectToNewObject ( "ADOX.Column" )
ole_connection.Open ( "Provider=Microsoft.Jet.OLEDB.4.0;data source=" + ls_pathname )
ole_catalog.ActiveConnection = ole_connection
dw_1.Reset()
li_tab_count = ole_catalog.Tables.Count
FOR li_tab_index = 0 TO li_tab_count - 1
ole_table = ole_catalog.Tables[li_tab_index]
ls_tablename = ole_table.Name
li_col_count = ole_table.Columns.Count
FOR li_col_index = 0 TO li_col_count - 1
ole_column = ole_table.Columns[li_col_index]
ls_columnname = ole_column.Name
li_attributes = ole_column.Attributes
ll_row = dw_1.InsertRow ( 0 )
dw_1.object.table_name[ll_row] = ls_tablename
dw_1.object.column_name[ll_row] = ls_columnname
CHOOSE CASE li_attributes
CASE 1
dw_1.object.fixed_width[ll_row] = 'Y'
CASE 2
dw_1.object.nullable[ll_row] = 'Y'
CASE 3
dw_1.object.fixed_width[ll_row] = 'Y'
dw_1.object.nullable[ll_row] = 'Y'
END CHOOSE
NEXT
NEXT
ole_connection.DisconnectObject( )
Destroy ole_table
Destroy ole_catalog
Destroy ole_connection
Pero esto lo que hace es abrir el archivo de access directamente, a mi lo que me interesa es abrirlo mediante ODBD. ¿Cómo debería hacerlo? Muxas gracias
Valora esta pregunta
0