[ACCES] Hoe kan ik deze variabelen gebruiken?

Pagina: 1
Acties:

  • FoggyFreek
  • Registratie: Juni 2000
  • Laatst online: 23-07 17:23

FoggyFreek

I'm a llama again!

Topicstarter
Ik zit met een probleem.
Ik heb een hele reeks rectangles met de namen 900,910,920 etc. als ik de backColor wil instellen lijkt het me wel netjes om dit in een lus te doen.
maarr..
code:
1
2
3
For i = 900 To 950 Step 10
      Forms![Docentcursus]![i].BackColor = 6520
Next i

dit doet Acces dus niet.. hij kan het veld i niet vinden.
Nu is mijn vraag of het uberhaupt mogelijk is om dit soort variabelen te gebruiken om de naam van een veld te vervangen.

-- Altijd blijven prutsen --


  • Wortelpudding
  • Registratie: Februari 2002
  • Niet online
Het kan denk ik wel als je de variabele i van het type string maakt, of converteert naar een andere variabele van het type string. In jouw geval is i een integer...

Verwijderd

Next i

Ik denk dat dit niet werkt.
Probeer eens:
....
i = i + 10
Next

  • FoggyFreek
  • Registratie: Juni 2000
  • Laatst online: 23-07 17:23

FoggyFreek

I'm a llama again!

Topicstarter
Om te testen heb ik het volgende geprobeerd:
code:
1
2
3
4
5
Dim text as String
text = "900"

Forms![DocentCursus]!text.BackColor = 65280
Forms![DocentCursus]![text].BackColor = 65280

Beide doen het niet :(

-- Altijd blijven prutsen --


  • FoggyFreek
  • Registratie: Juni 2000
  • Laatst online: 23-07 17:23

FoggyFreek

I'm a llama again!

Topicstarter
Op dinsdag 21 mei 2002 12:07 schreef MartijnO het volgende:
Next i

Ik denk dat dit niet werkt.
Probeer eens:
....
i = i + 10
Next
Hij komt niet eens tot de Next i..
Hij vind het veld (de rectangle) "i" niet. terwijl i wel op 900 staat..

aargh.. ik heb geen zin om alles uit te gaan schrijven.. van 900 tot 2200.

-- Altijd blijven prutsen --


  • Paxlie
  • Registratie: Oktober 2000
  • Laatst online: 09-02 10:40

Paxlie

chaos en inslag

Zet er anders eens boven:
code:
1
Dim i as Integer

Dan declareer je hem echt als integer, misschien dat dat helpt

Wie werd waar wanneer geboren en waarom werd hij door wie hoe genoemd?
braque© zijn is een keuze


  • Phenomenon
  • Registratie: December 2000
  • Laatst online: 01-04 13:18
Doe het dan zoiets
code:
1
2
3
4
5
Dim Veld as Fields

For each veld in Fields
 veld.backcolor = 'kleur'
next

Iets in die geest

  • FoggyFreek
  • Registratie: Juni 2000
  • Laatst online: 23-07 17:23

FoggyFreek

I'm a llama again!

Topicstarter
Op dinsdag 21 mei 2002 12:16 schreef Paxlie het volgende:
Zet er anders eens boven:
code:
1
Dim i as Integer

Dan declareer je hem echt als integer, misschien dat dat helpt
Dat is het ook niet :(

(b.t.w tnx voor alle help so far. ik hoop dat er nog iemand komt die de oplossing heeft.)

-- Altijd blijven prutsen --


  • FoggyFreek
  • Registratie: Juni 2000
  • Laatst online: 23-07 17:23

FoggyFreek

I'm a llama again!

Topicstarter
code:
1
2
3
4
5
If Forms![DocentCursus].[Van] <= 900 And Forms![DocentCursus].Tot > 900 Then Forms![DocentCursus]![900].BackColor = 65280 Else Forms![DocentCursus]![900].BackColor = 8421504
    If Forms![DocentCursus].[Van] <= 910 And Forms![DocentCursus].Tot > 910 Then Forms![DocentCursus]![910].BackColor = 65280 Else Forms![DocentCursus]![910].BackColor = 8421504
    If Forms![DocentCursus].[Van] <= 920 And Forms![DocentCursus].Tot > 920 Then Forms![DocentCursus]![920].BackColor = 65280 Else Forms![DocentCursus]![920].BackColor = 8421504
    If Forms![DocentCursus].[Van] <= 930 And Forms![DocentCursus].Tot > 930 Then Forms![DocentCursus]![930].BackColor = 65280 Else Forms![DocentCursus]![930].BackColor = 8421504
    If Forms![DocentCursus].[Van] <= 940 And Forms![DocentCursus].Tot > 940 Then Forms![DocentCursus]![940].BackColor = 65280 Else Forms![DocentCursus]![940].BackColor = 8421504



Dit moet ik afmaken wil ik een geheel tijdschema tot 2200u wil maken.
dus als het kan dit op een For manier. For Each wil nu niet omdat ik steeds andere waardes wil vergelijken.

-- Altijd blijven prutsen --


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 09:58

Dido

heforshe

Je geeft een waarde door, maar VBa wil een adres. (Of te wel: een variabele)

i is voor VB een waarde variabele, nooit de naam van een variabele. Laatst vroeg iemand waar pointers goed voor waren... dit zou er een zijn. Maar dan had je daar al eerder rekening mee moeten houden ben ik bang.

Dit gaat iig zo nooit lukken. Als je je objecten kunt nummeren - Rectangle[900] to Rectangle[2000] - kom je al een stuk verder dan door ze allemaal verschillende namen te geven. Je had ze dan net zo goed rood, oranje, geel, blauw, etc. kunnen noemen!

Wat betekent mijn avatar?


  • FoggyFreek
  • Registratie: Juni 2000
  • Laatst online: 23-07 17:23

FoggyFreek

I'm a llama again!

Topicstarter
Op dinsdag 21 mei 2002 12:26 schreef Dido het volgende:
Je geeft een waarde door, maar VBa wil een adres. (Of te wel: een variabele)

i is voor VB een waarde variabele, nooit de naam van een variabele. Laatst vroeg iemand waar pointers goed voor waren... dit zou er een zijn. Maar dan had je daar al eerder rekening mee moeten houden ben ik bang.

Dit gaat iig zo nooit lukken. Als je je objecten kunt nummeren - Rectangle[900] to Rectangle[2000] - kom je al een stuk verder dan door ze allemaal verschillende namen te geven. Je had ze dan net zo goed rood, oranje, geel, blauw, etc. kunnen noemen!
Dank. :'(

ik ga weer even vol aan de slag

-- Altijd blijven prutsen --


  • FoggyFreek
  • Registratie: Juni 2000
  • Laatst online: 23-07 17:23

FoggyFreek

I'm a llama again!

Topicstarter
Kan ik rectangles aanmaken in Visual Basic ?
Of moeten deze dan allemaal al aanwezig zijn op de form..
want dan kan ik ze namelijk in een array gooien.
Dat moet wel lukken.

Maar kan je dus een rectangle creeëren in VBa ?

-- Altijd blijven prutsen --


Verwijderd

Je kunt een rectangle een index meegeven. Je krijgt bijvoorbeeld dan als naam:
rec(0)
rec(1)
rec(2)
...
rec(999)

Door deze getallen kun je loopen.

Je zou de rectangles ook in runtime kunnen aanmaken. Dan wordt het iets als
code:
1
2
3
4
5
Dim rect() as Rectangle
Set Rect(1) = new Rectangle

rect(1).left = intLeft
(etc)

Maar als het er niet al te veel zijn kun je ze natuurlijk ook gewoon in designtime aanmaken. Dat heb je tenslotte nu ook al gedaan...

  • thomrob
  • Registratie: Maart 2001
  • Laatst online: 22-05 12:22

thomrob

allround developer

heb eens iets dergelijks gehad. Een aantal controls moeten doorlopen worden. De controls hebben allemaal een numerieke naam, dus : 1 ,2 ,3 enz.

onderstaande code loopt door de controls. Let op de syntax:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Public Sub locken()
On Error GoTo ErrorHandler

DoCmd.GoToControl "nr"
Dim i As Integer
    For i = 1 To Screen.ActiveForm.aantalctl
    Screen.ActiveForm("" & i).Locked = True
    Screen.ActiveForm("" & i).Enabled = False
    Next i
    
exiterrorhandler:
    Exit Sub

ErrorHandler: Call erroropslag
    MsgBox Err.Number & " Er is een fout opgetreden."
    Resume exiterrorhandler
End Sub

  • Blizard
  • Registratie: September 2001
  • Niet online
Op dinsdag 21 mei 2002 12:29 schreef FoggyFreek het volgende:
Kan ik rectangles aanmaken in Visual Basic ?
Of moeten deze dan allemaal al aanwezig zijn op de form..
want dan kan ik ze namelijk in een array gooien.
Dat moet wel lukken.

Maar kan je dus een rectangle creeëren in VBa ?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub TestFoggy()
    Dim frm As Form
    Dim ctlKader As Control
    
    Set frm = CreateForm
    
    intKaderX = 1000
    intKaderY = 100
     
    Set ctlKader = CreateControl(frm.Name, acRectangle, , , , 100, 100, 1000, 500)


    DoCmd.Restore
End Sub

Dit is het stukje code dat een rectangle maakt, .. mits een beetje spelen met een loopje moet je wel meerdere van deze rectangles op je formulier krijgen !
Pagina: 1