Ga naar inhoud

[vb6] Variable Kolom naam met ADO 2.5


anoniem

Aanbevolen berichten

Hallo Allen, Ik ben momenteel bezig om een programma te schrijven die data in een Access database kan veranderen. Het probleem is alleen dat de kolom naam variabel kan zijn. Ik heb dus een text veld gemaakt waarin de gebruiker de naam van de kolom kan opgeven. De verbinding naar de database en de tabel werkt goed en als ik een vaste kolom naar opgeef werkt dat ook goed, maar ik wil de dat de naam van de text box wordt gebruikt als kolom naam. Ik gebruik daar de volgende code voor: [code:1:8047efa0b4] Dim rs As ADODB.Recordset Set DB = OpenDatabase(txtDatabaseName) ADOConnect Set rs = New ADODB.Recordset rs.Open "Select * from " & txtTableName, cn If Not rs.BOF Then rs.MoveFirst End If While Not rs.EOF MsgBox rs!txtFindWhatColumn rs.MoveNext Wend rs.Close Set rs = Nothing[/code:1:8047efa0b4] Zoals is te zien moet de kolom naar van [i:8047efa0b4]txtFindWhatColumn[/i:8047efa0b4] gebruikt worden maar ik krijg de volgende fout melding: [quote:8047efa0b4]Run-time error '3265' Item cannot be found in the collection corresponding to the requested name or ordinal.[/quote:8047efa0b4] Weet iemand hoe ik dit kan oplossen???? Alvast bedankt
Link naar reactie
De melding geeft aan dat het betreffende veld niet bestaat in de recordset. Dat zal ook wel kloppen, tenzij je inderdaad een tabelveld de naam txtFindWhatColumn hebt gegeven, wat niet het geval is. Ik vermoed dat txtFindWhatColumn de naam is van de textbox waar je die naam in wilt vullen. Dit komt doordat VB alles achter de ! (bang-operator) als literal interpreteert. Er vanuit gaande dat je de inhoud van het veld wilt laten zien. Probeer eens het volgende: (code uit de losse pols direct hier ingetikt, dus kan foutjes bevatten) [code:1:ea8df375c6] MsgBox rs.fields(txtFindWhatColumn).value [/code:1:ea8df375c6] Overigens is het helemaal niet logisch om een veldnaam in een textbox in te laten tikken. Als je toch zoiets wilt doen is het verstandiger om de beschikbare veldnamen gewoon te tonen in een combo, of een listbox. Dat gaat heel eenvoudig. Je zet een combo op je form en vervolgens vul je die met de namen van de velden uit de fields-collection van de betreffende recordset. Zo dus: (code ook weer uit het losse polsje, dus geen garanties) [code:1:ea8df375c6] private functon VulCombo dim intI as integer intI = 0 do while intI < rs.fields.count combo1.additem rs.fields(intI).name intI = intI + 1 loop end function [/code:1:ea8df375c6]
Link naar reactie
De .text property is eigenlijk nooit nodig om de inhoud van een textbox te zien daar dit de defaultproperty is voor een textbox. De reden dat het niet werkte is, zoals ik al zei, de !-operator. Dit is een speciale operator waardoor vb dat wat je erachter zet als naam beschouwd. M.a.w hij herkent dan die naam niet als textbox (zal dus ook niet naar de inhoud kijken) maar ziet die naam als de naam van het veld in je tabel. De oplossing die ik je gaf gebruikt de waarde die je in de textbox zet als index om in de Fields collection te prikken. Ik heb trouwens nog een aanvulling gedaan op vorige mijn reply, dus kijk even 2 posts terug.
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...