[VB6] Flexibiliteit in het gebruik van method

Pagina: 1
Acties:

  • Uiligheid
  • Registratie: December 2000
  • Laatst online: 20-08 15:21

Uiligheid

alle gekheid op een stokje

Topicstarter
Ik ben bezig om een applicatietje te gebruiken dat aan de ene kant met een ander programma praat en aan de andere kant met een Access db.
Nu is de communicatie met de eerste applicatie geregeld via een dll. Ik wil de gebruikers laten kiezen welke gegevens worden opgehaald uit deze applicatie.

Ik zat te denken om mijn applicatie dus flexibel gegevens over te laten zetten. Hij haalt gegevens uit het ene programma, en zet die in de access database. De gegevens die hij ophaalt kunnen echter verschillen.

Code voor het ophalen ziet er bijvoorbeeld zo uit:
code:
1
2
Dim applicatie as object
applicatie.OpenGegevens.Leesgegeven1Uit

Nu moet ik bijvoorbeeld in plaats van gegeven1 gegeven2 hebben. Dat kan dus niet hard gecodeert worden.

Ik wil dit wel opslaan in een 3e database, vraag is alleen dan, hoe roep ik die methode dan aan?
code:
1
2
3
4
5
6
Dim applicatie as Object
Dim 3edatabase as recordset
Dim ff as String
ff = "applicatie.OpenGegevens." & 3edatabase!veld1

ff

Dus hoe moet ik dit netjes aanpakken, de dll aanroepen die ik wil doen, moeten flexibel zijn.

Code hierboven zuigt natuurlijk, maar is alleen even om het probleem te schetsen.. ( ik mis nog een VB - syntax checker binnen dit php-forum (8> )

Ceterum censeo Carthaginem esse delendam


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 09-09 16:14

Crazy D

I think we should take a look.

Niet over nagedacht antwoord:
how bout een functie haalGegevens, met als parameters een identificatie voor welke gegevens.

Exact expert nodig?


  • Uiligheid
  • Registratie: December 2000
  • Laatst online: 20-08 15:21

Uiligheid

alle gekheid op een stokje

Topicstarter
Hoe zie je dat in psuedocode voor je dan? Dat betekent namelijk wel dat ik iets van 1200 verschillende gegevens moet definieren in mijn code. Vindt ik eigenlijk wel heftug hoor..

Ceterum censeo Carthaginem esse delendam


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 09-09 16:14

Crazy D

I think we should take a look.

Hmmm als je in een dll de functies wil maken om makkelijk gegevens op te kunnen halen, en het zijn zoveel gegevens, dan denk ik dat het niet handig is om 1 functie te maken. Ik denk dat je dan ook je doel een beetje voorbij streeft...
Dan zou ik denk ik eerder kiezen om verschillende classes in die dll te stoppen, bijvoorbeeld (kweet niet wat voor data het om gaat) een class voor debiteurgegevens, artikelen, agenda overzicht, etc. En binnen de class een aantal functies om bv aan de hand van een debiteurnummer een naam op te halen, of aan de hand van een postcode alle debiteuren met die postcode (om maar ff wat uit het losse polsje te noemen).

Als je doel is dat ze makkelijk uit willekeurig welke tabel gegevens kunnen ophalen, en je wilt niet zelf zoveel functies schrijven (of genereren :)), maar je wilt het wel in de dll doen zodat de gebruikers bv geen gezeur met een db connectie hebben, zou je misschien nog iets kunnen doen als:
property voor velden, property voor de tabel, property om een voorwaarde te zetten, en dan daar in je dll een query van te bakken....

[edit]
kun je iets specifieker zijn in wat voor data het betreft? Ik kan het alleen bedenken voor hetgeen wat ik ken, en voor mij zouden bovengenoemde manieren goed werken.

Exact expert nodig?


  • Uiligheid
  • Registratie: December 2000
  • Laatst online: 20-08 15:21

Uiligheid

alle gekheid op een stokje

Topicstarter
Ja, het is echter niet zo simpel. Het is niet zo dat ik mijn dll zelf wil maken. De dll bestaat al, en die kan ik ook niet veranderen. Het programma wat ik wil schrijven zal moeten inspelen hierop.

De dll zelf is hierarchisch ingericht. Dat wil zeggen dat hij van een op meer werkt.

Omdat het verder niet echt uitmaakt waarin, laten we uitgaan van een school

1 school --> meerdere opleidingen
opleiding --> meerdere studenten
student --> meerdere vakken
vak --> meerdere cijfers.

Get the picture?

De methods in de dll zijn al voor gedefinieerd, ik kan dus bijvoorbeel de volgende functie aanroepen:
code:
1
School.Opleiding.Student.Vak.Vaknaam

Vraag is nu echter hoe ik dit generiek kan maken. Ik wil dat ik een willekeurig gegeven kan opslaan als vaknaam. Het selecteren van een bron hiervoor kan redelijk simpel gedaan worden door ODBC. Dan kan ik de tabellen en de velden laten ophalen.
Om hem naar deze dll te sluizen wordt dan wat lastiger.
Ik kan namelijk niet zomaar die handel opslaan in een db, en dan een method aanroep te generen. Dat is mijn probleem. In de code moet altijd een harde method aanroep staan. Maar ik wil dat de aanroep flexibel is. Dit zou toch wel moeten kunnen? :?

Ceterum censeo Carthaginem esse delendam


  • PdeHoog
  • Registratie: December 2001
  • Laatst online: 23-09-2024
Op maandag 22 april 2002 13:52 schreef seilander het volgende:
In de code moet altijd een harde method aanroep staan. Maar ik wil dat de aanroep flexibel is. Dit zou toch wel moeten kunnen? :?
Volgens mij gaat je dat niet lukken, mits je dynamisch code kunt genereren.

Je zou dan een volledig event (bijvoorbeeld _onclick()) moeten gaan definieren en koppelen aan een knop op een dynamisch op te bouwen formpje.

Ik heb wel eens zoiets zien werken in VBA in Access. erg fraai maar zeer gecompliceerd.

Een voorbeeldje (weliswaar met picturebox maar ok):
http://www.planetsourcecode.com/vb/scripts/ShowCode.asp?txtCodeId=8616&lngWId=1

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 09-09 16:14

Crazy D

I think we should take a look.

Op maandag 22 april 2002 13:52 schreef seilander het volgende:
Om hem naar deze dll te sluizen wordt dan wat lastiger.
Ik kan namelijk niet zomaar die handel opslaan in een db, en dan een method aanroep te generen. Dat is mijn probleem. In de code moet altijd een harde method aanroep staan. Maar ik wil dat de aanroep flexibel is. Dit zou toch wel moeten kunnen? :?
Ik snap je niet helemaal (kan er niet echt een voorstelling van maken), maar is School.Opleiding.Vaknaam hard gecodeert in die dll? Oftewel, heb je alleen de keuze tussen die vakken die er staan?
Naja niet dat dat heel veel uitmaakt, je kunt niet in code een functie/property maken (zou wel handig zijn, Me.AddFunction("Functie1", "param1", "param2") :)) dus zoals ik je begrijp, kan dat niet.

Exact expert nodig?


  • Uiligheid
  • Registratie: December 2000
  • Laatst online: 20-08 15:21

Uiligheid

alle gekheid op een stokje

Topicstarter
Dat was inderdaad mijn vraag. De dll maakt verbinding met de database.. Dat houdt dus in, dat als ik een vaknaam wil vullen in een keer de code :
code:
1
School.Opleiding.Student.Vakken.Vaknaam

in mijn module zou moeten komen, maar dat kan dus niet.. dat is dan dus gewoon een beperkte flexibiliteit van het werken met een dll.
Fijn, weer een conclusie voor het archief.

Ceterum censeo Carthaginem esse delendam


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 09-09 16:14

Crazy D

I think we should take a look.

Op maandag 22 april 2002 15:55 schreef seilander het volgende:
Dat was inderdaad mijn vraag. De dll maakt verbinding met de database.. Dat houdt dus in, dat als ik een vaknaam wil vullen in een keer de code :
code:
1
School.Opleiding.Student.Vakken.Vaknaam

in mijn module zou moeten komen, maar dat kan dus niet.. dat is dan dus gewoon een beperkte flexibiliteit van het werken met een dll.
Fijn, weer een conclusie voor het archief.
Als de dll uit collections zou zijn opgebouwd, dus dat je
School.Opleidingen("havo").Studenten("jantje").Vakken("Informatica")
kan doen, had het geen probleem geweest ;)

Exact expert nodig?


  • Uiligheid
  • Registratie: December 2000
  • Laatst online: 20-08 15:21

Uiligheid

alle gekheid op een stokje

Topicstarter
Hij bestaat uit collections, maar dan kan het nog niet volgens mij. Ook niet op de manier, zoals je net deed. Als ik bijvoorbeeld in een keer besluit iets aan een vaknaam toe te voegen, dan zal ik die functie-aanroep al hard moeten coderen. Dit zou in mijn situatie nu inhouden dat ik een stuk of 250 tot 500 functies van te voren hard moet coderen.
hmppf... das me toch te veel werk.. |:(

Ceterum censeo Carthaginem esse delendam


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 09-09 16:14

Crazy D

I think we should take a look.

Hmmm waarom heb ik nou het gevoel dat de dll dan niet echt flexibel is opgezet? :P
Als deze uit collections is opgebouwt zoals ik bedoel, en de gegevens (zoals opleidingen, vakken, studenten) komen uit een db, zou je gewoon die gegevens moeten kunnen toevoegen in de db.

Exact expert nodig?


  • Uiligheid
  • Registratie: December 2000
  • Laatst online: 20-08 15:21

Uiligheid

alle gekheid op een stokje

Topicstarter
het is een uitermate mooie dll. Hij is flexibeler opgezet, dan dat ik hem zelf ooit zou kunnen bouwen, alleen is hij wel zo groot dat ik dan alle aanroepen zou moeten definieren.

Ceterum censeo Carthaginem esse delendam

Pagina: 1