Welcome To The Home Of The Visual FoxPro Experts  
home. signup. forum. archives. search. google. articles. downloads. faq. members. weblogs. file info. rss.
 From: Cetin Basoz
  Where is Cetin Basoz?
 Izmir
 Turkey
 Cetin Basoz
 To: None None
  Where is None None?
 None
 France
 None None
 Tags
Subject: RE: tables and column names via oledb
Thread ID: 190137 Message ID: 190160 # Views: 31 # Ratings: 0
Version: Visual FoxPro 9 SP2 Category: ODBC, ADO and OLEDB
Date: Tuesday, August 19, 2008 6:14:29 PM         
   


> 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




COMPLETE THREAD

Tip: click here to scan for Windows Registry Errors and Optimize PC performance
tables and column names via oledb Posted by None None @ 8/19/2008 4:05:22 PM
RE: tables and column names via oledb Posted by Koen Piller @ 8/19/2008 4:46:50 PM
RE: tables and column names via oledb Posted by Anders Altberg @ 8/19/2008 4:56:58 PM
RE: tables and column names via oledb Posted by None None @ 8/19/2008 5:06:21 PM
RE: tables and column names via oledb Posted by Cetin Basoz @ 8/19/2008 6:14:29 PM
RE: tables and column names via oledb Posted by Cetin Basoz @ 8/19/2008 6:15:33 PM
RE: tables and column names via oledb Posted by suhas hegde @ 8/19/2008 9:29:56 PM
RE: tables and column names via oledb Posted by Cetin Basoz @ 8/20/2008 9:49:45 AM
RE: tables and column names via oledb Posted by suhas hegde @ 8/20/2008 10:36:31 PM
RE: tables and column names via oledb Posted by Cetin Basoz @ 8/21/2008 3:04:42 PM
RE: tables and column names via oledb Posted by Anders Altberg @ 8/19/2008 8:24:41 PM
RE: tables and column names via oledb Posted by Anders Altberg @ 8/19/2008 8:41:25 PM