Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

converteren van Type naar Structure in VB

0 views
Skip to first unread message

petert

unread,
Jul 13, 2009, 4:59:01 PM7/13/09
to
Met het converteren van VB6 naar VB 2008 loop ik tegen het volgende probleem:
In mijn vb6 programma heb ik gebruik gemaakt van Type variable in een array.
In VB 2008 is dat vervangen door structure en moet de array initialized
worden.
Het lukt mij maar niet om het werkend te krijgen. Kan en wil iemand mij de
oplossende tip geven?

Hier onder is de oude en vertaalde versie weergegeven:

'VB 6
Type DetailInfo
Dim F1 As Short
Dim F2 As String
Dim F3 As String
Dim F4 As String
Dim F5 As String
End Type

Type AllrecordInfo
Dim X1 As Short
Dim X2 As Short
Dim X3 As Short
Dim DI(9) As DetailInfo '
End Type

Dim record As Allrecordinfo
Record.X1 = 2
record.di(1).F2 = "abc"

'vb2008
Structure DetailInfo
Dim F1 As Short
Dim F2 As String
Dim F3 As String
Dim F4 As String
Dim F5 As String
End Structure

Structure AllrecordInfo
Dim X1 As Short
Dim X2 As Short
Dim X3 As Short
Dim DI() As DetailInfo '

Public Sub Initialize()
ReDim Di(9)
End Sub
End Structure

Dim record As Allrecordinfo
'onderstaande statements geven allemaal dezelfde error "Declaration expected"
'Naar mijn mening is dat al gedaan in Dim record as AllRecordInfo
Record.initialize() '
Record.X1 = 2 '
Record.di(1).F2 = "abc" '
--
Peter

Cor Ligthert[MVP]

unread,
Jul 14, 2009, 1:13:49 AM7/14/09
to
Peter,

Waarom maak je geen classen in plaats van structures.
Structures zijn zinvol voor kleine zaken die op de stack moeten worden
geplaatst.

Niet shared classes worden geinstantieerd als objecten en sluiten daarom
meer aan op OOP.

Ik zag laat dat deze nieuwsgroep weer een keer een vraag bevatten, ik zal
hier vanavond wat meer op ingaan als je dat wil.

Groeten,

Cor

"petert" <pet...@discussions.microsoft.com> wrote in message
news:17E2626A-DB38-46C2...@microsoft.com...

petert

unread,
Jul 14, 2009, 4:27:01 AM7/14/09
to
Cor,
bedankt voor je snelle reactie. Als je er verder op in wilt gaan graag, ik
ben nog een programmeur uit de tijd van assembler etc. in die tijd was oop
onbekend.
Wat ik wil bereiken is een blok of data waar alles in zit en gebruikt word
in diverse programma's binnen een groep. Het belangrijkste doel is om data
uit een database te halen en weer te geven en gebruikers input op te slaan
en/of de data te wijzigen.
Hiervoor gebruikte ik tot nu toe de type statement. Het voordeel is dat er
één blok is waar deze data staat.
--
Peter

Cor Ligthert

unread,
Jul 14, 2009, 6:32:01 AM7/14/09
to
Hallo Peter

Ik kom van voor de tijd van assembler etc. :-) ik begon met kabeltjes.

Echter als het om data gaat is het eenvoudiger om designers te gebruiken.

Als het voor een datatable is (dit lijkt erg op wat je nu doet).
Dan kies je in de top van je IDE
Data -> Add new DataSource -> Select Database en dan Next
New Connection en select je database
Vink de table aan die je wilt gebruiken en doe Finish
Als je nu in solution Explorer kijkt is er een class aangemaakt. .XSD
Click hierop en de beschrijvende class staat nu in je project
Als je dit wilt gebruiken kan je bijvoorbeeld een DataGridView op een from
slepen en dat met wat simpele code gebuiken.

Als je op je form dubbel klikt en dan intijpt

me.DeGeMaakteTableAdapter.Fill(DeDoorJouGekozenTabel)
DataGridView1.DataSource = DeDoorJouGekozenTabel

en runt zie je het al op je scherm.

Dit is een keuze maar er zijn eindeloos veel mogelijkheden
(Ik heb dit even snel ingetijpt dus het zal wel niet helemaal foutloos zijn)

Groeten,

Cor

petert

unread,
Jul 15, 2009, 6:08:01 PM7/15/09
to
Cor,
sorry voor de late reactie, maar soms komt er wat tussendoor.
Inderdaad heb ik ook nog gewerkt met plugboards waar programma's werden
geprikt. Ik zal het eens proberen met de designer. In feite gebruik ik een
acces database waar in het record een type id staat. Via een query worden
gerelateerde records opgehaald en die moeten worden displayed. of als er geen
records zijn worden gemaakt en gevuld. Het maximum aantal gerelateerde
records is 10.
Ik meld me weer als ik wat geexperimenteerd heb met de designer.

--
Peter

petert

unread,
Aug 1, 2009, 8:21:01 AM8/1/09
to
Cor,
na wat experimenteren heb ik besloten om toch maar bij de structures te
blijven.
De structure wordt gevuld en gebruikt in verschillende forms en programma's.
Het ging fout omdat ik de call naar de initialize op een verkeerde plaats
had staan.

Ik heb even een klein vraagje over de ontwikkelomgeving. Alle modules forms
etc die gebruikt worden voor een groep programma's staan in één directory.
Deze programma's gebruiken dezelfde structuren , modules en soms forms. Een
wijziging in een module/form van een programma is dan ook meteen voor alle
andere programma's en dat is ook de bedoeling. Het probleem is dat als ik aan
een één van de programma's werk en om wat voor reden dan ook een module/form
verwijder (delete) uit de lijst in de solution explorer wordt deze ook fysiek
van de disk verwijder en is het module niet meer beschikbaar voor de andere
programma's.
Eigenlijk mis ik een optie als remove from list oid. In VB6 gebeurde dit
niet. Kan je mij vertellen wat ik fout doe ?

--
Peter

Cor Ligthert[MVP]

unread,
Aug 1, 2009, 9:41:23 AM8/1/09
to
Peter,

Daarvoor is Exclude en Include from project, als je bovenin in solution
explorer op dat blokje show all files drukt, dan zie je de excluded files
een beetje doorzichting.

Success

Cor

"petert" <pet...@discussions.microsoft.com> wrote in message

news:7E0C3A40-6A63-4525...@microsoft.com...

petert

unread,
Aug 2, 2009, 6:34:01 PM8/2/09
to
Cor,
bedankt voor het snelle antwoord. Deze optie had ik nog niet gebruikt maar
lost het probleem niet op.
Stel ik heb een prog1 dat gebruikt m1,m2,m3,m5,m7,m10,m11
en een prog2 dat gebruikt m1,m2,m3,m6,m8,m9.
m1,m2 en m3 zijn initializatie modules en die worden in alle programma's
gebruikt.
Nu add ik per ongeluk m10 inplaats van m11 bij prog2 en dit resulteert in
fouten als niet gevonden referenties. Dan moet ik m10 verwijderen/niet
gebruiken in de lijst van prog2, maar dat kan niet voorzover ik weet. Delete
resulteert in het volledig verwijderen van de disk zodat m10 ook niet meer
beschikbaar is voor prog1.
Enig idee hoe dat moet? In VB6 gebruikte je remove

Cor Ligthert[MVP]

unread,
Aug 3, 2009, 12:02:07 PM8/3/09
to
Peter,

Daarom gebruikt men momenteel simpel Class Libraries, je creeert een class
library en gebruikt dat als reference voor al je andere programma's een veel
netere manier.

Cor

"petert" <pet...@discussions.microsoft.com> wrote in message

news:386CACF0-11A5-4357...@microsoft.com...

0 new messages