[ACCESS] Field details query

Pagina: 1
Acties:

  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 01-05 19:09

pjvandesande

GC.Collect(head);

Topicstarter
Ik probeer de Field details te querien van een Access database. Na een hoop deja en google ben ik er nog steeds niet uit.

Graag zou ik dus een set terug krijgen met alle fields in een table en de details van de fields.

De tabel namen vraag ik op door de query
SQL:
1
2
3
4
5
SELECT MSysObjects.Name
FROM MSysObjects
WHERE (((MSysObjects.Name) Not Like "MSys*") AND ((MSysObjects.Type)=1
OR (MSysObjects.Type)=6))
ORDER BY MSysObjects.Name


Dit werkt prima, alleen nu zou ik geen idee hebben hoe ik nu de details van de fields in die tables zou kunnen verkrijgen.

Met C# kan ik dit doen:
C#:
1
2
3
4
5
6
7
8
public DataTable GetTables(OleDbConnection conn)
{
  conn.Open();
  DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
                                                   new object[] {null, null, null, "TABLE"});
  conn.Close();
  return schemaTable;
}


Alleen ik weet niet wat voor type connection ik kan verwachten dus werk ik met de IDbConnection interface.

[ Voor 31% gewijzigd door pjvandesande op 08-03-2005 11:42 ]


  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Ik heb geen structurele oplossing voor je maar je kunt eventueel toch
SQL:
1
2
3
SELECT *
FROM <table>
WHERE 1=0

doen, en dan de recordset properties raadplegen om veldgegevens te achterhalen?

Misschien dat dit lelijke voorstel reacties losmaakt waar je iets mee kan ;)

Verwijderd

je bent juist bezig : How To Retrieve Schema Information de .net informatie bevat het nodige als ik de verwijziging op internet mag geloven.
anders adox, maar dit is niet native beschikbaar in ado.net, je moet een projectverwijzing instellen.

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Stop AI Slop

Bij een RecordSet (resultaat van een query) in ASP werk ik hiermee:

code:
1
2
3
4
5
6
7
8
' Selecteer één record
RecordSet = DBConn.Execute("Select * From Tabel Where ID=1")

' Doorloop alle velden in de recordset
For ID = 0 to RecordSet.Fields.Count
  RecordSet.Fields(ID).Type 
  RecordSet.Fields(ID).Name
Next


Met die attributen Type en Name kun je al veel info achterhalen. Succes!

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 01-05 19:09

pjvandesande

GC.Collect(head);

Topicstarter
Ik zit nog met een aantal dingen op die manier. Je kunt de AutoIncrement achterhalen op die manier, maar alleen als een boolean waarde, maar dan mis je dus de Yes, not for replication. En zo mis je nog meer dingen.

We zijn bezig met een database synchronizer die dus a.d.h.v. een database model (XML) een database genereert en eventueel data copyeerd of aanvult.

Ik haal nu een schema op met IDataReader.GetSchemaTable();.