Toon posts:

[Access] System Tables

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil dynamisch iets bouwen met een MS Access DB, hiervoor wil ik eigenlijk System tables gebruiken. Er zijn er wel enkele die ik gevonden heb, zoals MSysObject, maar daar staan nergens kolom namen en dergelijk in. Zijn de kolomnamen met zijn eigenschappen op te vragen? Of moet ik dit gewoon via VB op gaan lossen?
Graag geen reactie over Access, ik zou zelf ook liever iets anders gebruiken.


Ik wil een prgramma maken waarbij je voor het gebruik je output en input kunt kiezen. De velden waaruit gekozen kan worden wil ik uit de database halen, dit omdat het een dynamische database is die voor elke project anders is en op deze manier hoeven de gebruikers nooit iets te zien van de Database. Ik kan dus met mijn programma soms zelf meerdere verschillende databases gebruiken.
Ik wil dan tevens bij de invoer zorgen dat er geen verkeerde waardes ingevuld kunnen worden, dus geen text als het een integer moet zijn, als een text niet langer mag dan 8 karaters dit al afvangen in de UI van het programma. Dit soort gegevens zijn dus ook steeds verschillend. Deze gegevens wil ik dus uit de access System tabellen halen indien mogelijk.

[ Voor 49% gewijzigd door Verwijderd op 16-02-2004 12:12 . Reden: verdere uitleg ]


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Graag geen reactie over Access, ik zou zelf ook liever iets anders gebruiken.
Onzin. Access kan in veel gevallen uitstekend voldoen. Ik wordt een beetje moedeloos van al die van-te-voren excuses over Access... :/

On-topic:
Waarom wil je system tables gebruiken? Access gebruikt SystemTables voor, zoals je misschien wel zou kunnen bedenken, systeem informatie. Als jij gegevens wilt toevoegen die een ander niet mag inzien, gebruik dan een wachtwoord op je database, of hide je tabel, of....

Leg je situatie en je volledige wensen even uit, anders kunnen we er zo weinig mee!

My personal website


  • Boss
  • Registratie: September 1999
  • Laatst online: 06:28

Boss

+1 Overgewaardeerd

Ik denk dat de gegevens die jij zoekt niet in de system tables staan. Ik ken ook eigenlijk geen situatie waarin je die tabellen zou willen gebruiken.

Alle eigenschappen van tabellen zijn gewoon op te vragen met Currentdb.Tables(nummer/naam tabel) en daarvan eventueel weer de fields property.

Hetzelfde met formulieren.

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • LouisXV
  • Registratie: November 2003
  • Niet online
Je bedoelt dat je alle systemtables wilt zien?

In de opties kan je aanzetten dat je die kan zien (extra/opties/weergave). Dan kan je al die tabellen zien en gewoon openen.
Ik wil een prgramma maken waarbij je voor het gebruik je output en input kunt kiezen. De velden waaruit gekozen kan worden wil ik uit de database halen, dit omdat het een dynamische database is die voor elke project anders is en op deze manier hoeven de gebruikers nooit iets te zien van de Database. Ik kan dus met mijn programma soms zelf meerdere verschillende databases gebruiken.
In Access is behoorlijk veel mogelijk. Maar wat wil je precies doen? Dat wordt niet helemaal duidelijk uit je verhaal.
Ik wil dan tevens bij de invoer zorgen dat er geen verkeerde waardes ingevuld kunnen worden, dus geen text als het een integer moet zijn, als een text niet langer mag dan 8 karaters dit al afvangen in de UI van het programma. Dit soort gegevens zijn dus ook steeds verschillend. Deze gegevens wil ik dus uit de access System tabellen halen indien mogelijk.
Eveneens geen probleem in Access. Als je het soort veld aangeeft zorgt Access er voor dat je geen verkeerde dingen in kan voeren, en verder heb je ook nog invoermaskers enzo.

Als ik het goed begrijp wil je dus een programma maken dat als het ware een vereenvoudigde versie van Access is? Denk er aan dat je de gebruikers dan waarschijnlijk ook nog zelf queries moet laten maken om de gegevens weer op te halen. Dat vergt heel wat werk.

Verwijderd

Topicstarter
Het programma wat ik maak is een soort van koppeling tussen een ander programma en Access. De gevens die ik nodig heb staan in access en de uitvoer die ik krijg wil ik in access opslaan. Ik moet in mijn programma aan kunnen geven welke variabele uit access ik voor het andere programma wil gebruiken. En ik moet weten waar ik de gegevens kan opslaan. Dit kan dus heel erg verschillen per project.
Het is dus ook niet echt een opties om alles error handling in Access te doen. Sommige variablen moet ik van te voren converten. Ik krijg namelijk altijd een string, stel dat ik het moet opslaan als datum, moet ik dus wel eerst converten.
Ik moet dus in mijn code kunnen zien hoe ik alles van de Db moet inlezen en hoe ik het moet opslaan.
Wat ook nog meespeeld is dat de DB na verloop van tijd kan veranderen, dus om het hard coded in mijn code te zetten is geen optie.
Ik ben via Google al aan het zoeken geweest en ik heb al een mogelijkheid om het via een typedefs te doen in VB, maar dit vind ik niet echt een mooie oplossing, want ik weet niet of die ook met oracle en MS SQL server werken, want er bestaat een mogelijkheid dat die later gebruikt gaan worden ipv Access, als de DB te groot word.
Oja Ik werk niet met VBA, maar het wordt een aparte toepassing.

[ Voor 3% gewijzigd door Verwijderd op 16-02-2004 13:31 ]


  • xtra
  • Registratie: November 2001
  • Laatst online: 19-11-2025
Verwijderd schreef op 16 februari 2004 @ 13:27:
Ik ben via Google al aan het zoeken geweest en ik heb al een mogelijkheid om het via een typedefs te doen in VB, maar dit vind ik niet echt een mooie oplossing, want ik weet niet of die ook met oracle en MS SQL server werken, want er bestaat een mogelijkheid dat die later gebruikt gaan worden ipv Access, als de DB te groot word.
Oja Ik werk niet met VBA, maar het wordt een aparte toepassing.
Een alternatief voor typedefs kan ADO zijn. Met OpenSchema kun je ook informatie krijgen over je hele database en werkt bij alle door ADO ondersteunde databases.

Verwijderd

Topicstarter
Ok nog bedankt, openschema werkt, voor het grootste deel, ik krijg het alleen niet voor elkaar om een foreign key te achterhalen.


Visual Basic .NET:
1
2
3
4
5
6
7
Set rsSchema = gAcnn.OpenSchema(adSchemaForeignKeys)
                                                  
While (Not rsSchema.EOF)
  If rsSchema.Fields("FK_TABLE_NAME") = tblName Then
     MsgBox rsSchema.Fields("FK_COLUMN_NAME")        'ff als test
  End If
Wend


Is deze code fout of moet ik het anders doen?

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Waarschijnlijk kun je het beste even door de gehele recordset loopen om te zien welke informatie erin zit.
Ik heb zelf wel eens zo'n scrippie geschreven, ik zal een poging doen hem hieronder te herschrijven:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
Function PrintRS( ByVal oRS )
   Dim sOutput
   Do While Not oRS.EOF
      Dim oField
      For Each oField in oRS.Fields
         sOutput = sOutput & "Veld " & oField.Name & "=" & oField.Value & vbCrLf
      Next
      oRS.MoveNext
   Loop
   PrintRS = sOutput
End Function


Ik geef geen garanties dat het zo werkt (ongetest enzo), maar hier kun je de output van OpenSchema misschien bestuderen.
Pagina: 1