anoniem Geplaatst: 14 mei 2002 Delen Geplaatst: 14 mei 2002 Weet er iemand hoe ik in visual basic ervoor kan zorgen dat ik een willekeurig aantal afbeeldingen kan verkrijgen? Ik weet namelijk niet op voorhand hoeveel afbeeldingen er zullen zijn. Ik had al iets geprobeerd met een array, maar dat bleek niet te werken Quote Link naar reactie
anoniem Geplaatst: 14 mei 2002 Auteur Delen Geplaatst: 14 mei 2002 Misschien kun je iets specifieker zijn, waar komen die afbeeldingen vandaan en waar gaan ze naar toe? Is er geen variabele di eaangeeft hoeveel afbeeldingen er zijn? Wat ik denk is dat een variabele array wel werkt, gewoon beginnen met een array die niet geïnitialiseerd is en naarmate er een afbeelding bijkomt, een ReDim Preserve uitvoeren. Dus als je bijvoorbeeld drie plaatjes al hebt en nummer vier komt er aan, dan krijg je ReDim Preserve plaatjes(1 to 4) ReDim betekent opnieuw instellen van de array en Preserve betekent dat de instellingen die er al zijn bewaard worden. Quote Link naar reactie
anoniem Geplaatst: 14 mei 2002 Auteur Delen Geplaatst: 14 mei 2002 Dan moet je ook even volledig zijn he.. Dim Plaatjes() as ... In een sub: ReDim Preserve Plaatjes(x to y) Dat Preserve kende ik nog niet. Is wel handig om te weten. Scheelt een hoop moeilijkheden :grin: _________________ © Sjoerd Boerhout. Niets uit deze post mag gereproduceerd worden zonder uitdrukkelijke schriftelijke toestemming van de auteur. Aan dit bericht kan geen enkel recht worden ontleend. Typ- en Zetfouten voorbehouden... [ Dit bericht is bewerkt door: Sjoerd Boerhout op 2002-05-14 13:06 ] Quote Link naar reactie
anoniem Geplaatst: 14 mei 2002 Auteur Delen Geplaatst: 14 mei 2002 Const sSQL = "SELECT * FROM iconen" Dim i As Integer Dim Kamer As Integer Dim kamernr As Integer Type Usertype2 Left As Integer Top As Integer Kamer As Integer Icoonaan As String Icoonuit As String End Type Dim BMP_Schakelaar(96) As Usertype2 Dim SSRibbon1(96) As SSRibbon Private Sub Iconen_Plaatsen() Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = New ADODB.Connection Set cn = DataEnvironment1.Connection1 cn.Open Set rs = New ADODB.Recordset rs.ActiveConnection = cn rs.Source = sSQL rs.Open rs.MoveFirst For i = 0 To rs.Fields.Count - 1 If rs!roomid = Kamer Then BMP_Schakelaar(i).Kamer = Kamer BMP_Schakelaar(i).Left = rs!xpos BMP_Schakelaar(i).Top = rs!ypos BMP_Schakelaar(i).Icoonaan = rs!icoonnaamaan BMP_Schakelaar(i).Icoonuit = rs!icoonnaamuit SSRibbon1(i).PictureDn = LoadPicture(BMP_Schakelaar(i).Icoonuit) SSRibbon1(i).PictureUp = LoadPicture(BMP_Schakelaar(i).Icoonaan) 'Icoon(i) = LoadPicture(BMP_Schakelaar(i).Icoonaan) End If rs.MoveNext Next i rs.Close cn.Close Maar als ik het zo doe dan krijg ik als hij bij de SSRibbon1(i) komt de volgende error: Run-time error '91': object variable or with block variable not set Quote Link naar reactie
anoniem Geplaatst: 14 mei 2002 Auteur Delen Geplaatst: 14 mei 2002 Wat is de waarde van: [b:c4ba904e37]rs.Fields.Count[/b:c4ba904e37]? Als die >= 98 is dan verklaard dat die foutmelding. Quote Link naar reactie
anoniem Geplaatst: 14 mei 2002 Auteur Delen Geplaatst: 14 mei 2002 de waarde hiervan is 12, dus daar zal het wel niet aan liggen Quote Link naar reactie
anoniem Geplaatst: 14 mei 2002 Auteur Delen Geplaatst: 14 mei 2002 [quote:ee580bf5b2][code:1:ee580bf5b2] For i = 0 To rs.Fields.Count - 1 [/code:1:ee580bf5b2][/quote:ee580bf5b2] En deze code loopt door de recordset? Ik zou eerst met: [code:1:ee580bf5b2] Select Count(*) from ... [/code:1:ee580bf5b2] het aantal ophalen en dan aan de hand hiervan de grootte van de array aanpassen. Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen