> Hi,
>
> I was wondering if there is a way to iterate over all foxpro tables (*.dbf) in a certain directory and get the column names of each table. Could I do that let's say in c# connecting ole db?
>
> Thanks in advance for your help and feedback
>
> antoschka
Is that a question concerning ADO and OleDB or
ADO.Net and OleDb?
Here is ADO sample:
#Define adSchemaProviderSpecific -1
#Define adSchemaAsserts 0
#Define adSchemaCatalogs 1
#Define adSchemaCharacterSets 2
#Define adSchemaCollations 3
#Define adSchemaColumns 4
#Define adSchemaCheckConstraints 5
#Define adSchemaConstraintColumnUsage 6
#Define adSchemaConstraintTableUsage 7
#Define adSchemaKeyColumnUsage 8
#Define adSchemaReferentialContraints 9
#Define adSchemaReferentialConstraints 9
#Define adSchemaTableConstraints 10
#Define adSchemaColumnsDomainUsage 11
#Define adSchemaIndexes 12
#Define adSchemaColumnPrivileges 13
#Define adSchemaTablePrivileges 14
#Define adSchemaUsagePrivileges 15
#Define adSchemaProcedures 16
#Define adSchemaSchemata 17
#Define adSchemaSQLLanguages 18
#Define adSchemaStatistics 19
#Define adSchemaTables 20
#Define adSchemaTranslations 21
#Define adSchemaProviderTypes 22
#Define adSchemaViews 23
#Define adSchemaViewColumnUsage 24
#Define adSchemaViewTableUsage 25
#Define adSchemaProcedureParameters 26
#Define adSchemaForeignKeys 27
#Define adSchemaPrimaryKeys 28
#Define adSchemaProcedureColumns 29
#Define adSchemaDBInfoKeywords 30
#Define adSchemaDBInfoLiterals 31
#Define adSchemaCubes 32
#Define adSchemaDimensions 33
#Define adSchemaHierarchies 34
#Define adSchemaLevels 35
#Define adSchemaMeasures 36
#Define adSchemaProperties 37
#Define adSchemaMembers 38
#Define adSchemaTrustees 39
#Define adSchemaFunctions 40
#Define adSchemaActions 41
#Define adSchemaCommands 42
#Define adSchemaSets 43
lcConStr = ;
'Provider=VFPOLEDB;'+;
'Data Source='+'e:\drived\cetin\ddrive\temp\data\testdata.DBC'
ReadSchema(m.lcConStr,adSchemaTables,'SchemaTables')
ReadSchema(m.lcConStr,adSchemaColumns,'SchemaColumns')
ReadSchema(m.lcConStr,adSchemaProviderTypes,'SchemaProviderTypes')
ReadSchema(m.lcConStr,adSchemaIndexes,'SchemaIndexes')
ReadSchema(m.lcConStr,adSchemaPrimaryKeys,'SchemaPrimaryKeys')
ReadSchema(m.lcConStr,adSchemaProcedures,'SchemaProcedures')
ReadSchema(m.lcConStr,adSchemaForeignKeys,'SchemaForeignKeys')
ReadSchema(m.lcConStr,adSchemaViews,'SchemaViews')
ReadSchema(m.lcConStr,adSchemaTableConstraints,'SchemaTableConstraints')
ReadSchema(m.lcConStr,adSchemaCheckConstraints,'SchemaCheckConstraints')
ReadSchema(m.lcConStr,adSchemaReferentialConstraints,'SchemaReferentialConstraints')
Procedure ReadSchema(tcConStr,tnSchema, tcCursorName)
Local oConn As 'ADODB.Connection'
Local rstSchema As ADODB.RecordSet
oConn = Createobject('ADODB.Connection')
oConn.Mode = 1 && adModeRead
oConn.Open( m.tcConStr )
rstSchema = oConn.OpenSchema(m.tnSchema)
*rstSchema = oConn.OpenSchema(adSchemaColumns)
RS2Cursor(rstSchema,m.tcCursorName)
rstSchema.Close
oConn.Close
Endproc
Procedure RS2Cursor(toRS, tcCursorName) &&simple single cursor,not intended for complex ones - VFP8 and up
Local oCa As CursorAdapter
oCa = Createobject('Cursoradapter')
oCa.Alias = m.tcCursorName
oCa.DataSourceType = "ADO"
oCa.CursorFill(.F.,.F.,0,toRS)
Select (oCa.Alias)
Browse
Endproc
*!* Procedure RS2Cursor(toRS, tcCursorName) && simple single cursor - not intended for complex ones
*!* tcCursorName = Iif(Empty(m.tcCursorName),'ADORs',m.tcCursorName)
*!* Local xDOM As 'MSXML.DOMDocument'
*!* xDOM = Createobject('MSXML.DOMDocument')
*!* toRS.Save(xDOM, 1)
*!* Xmltocursor(xDOM.XML, m.tcCursorName)
*!* Endproc
I will send C# sample on next message in order to not to clutter this one.
Cetin Basoz