Toon posts:

[vb] Itemdata

Pagina: 1
Acties:
  • 69 views sinds 30-01-2008

Verwijderd

Topicstarter
Hallo,

Ik gebruik het volgende stukje code om wat informatie uit een database te halen:
Visual Basic 6:
1
2
3
4
5
Do until objRs.EOF 
  List4.addItem Trim(objRs!Omschrijving) 
  List4.ItemData(List4.newIndex) = objRs.IDproduct 
  objRs.MoveNext 
Loop

Elk item wat dan in de tabel Omschrijving staat word dan in een listbox gezet. Hieraan word via Itemdata een unieke code gekoppeld. Wat ook uit het database word gehaald. Wanneer ik dan op zo'n omschrijving klik word de volgende actie uitgevoerd om de ID code op te vragen via ItemData
Visual Basic 6:
1
2
3
strMsg = "Omschrijving " & List4.List(List4.ListIndex) 
strMsg = strMsg & " ID = " & List4.ItemData(List4.ListIndex) 
msgBox strMsg

Hiermee geeft die netjes bijvoorbeeld 123456 weer wat ook in het database staat maar waneer een code begint met 0 haalt hij dit weg. bijvoorbeeld:

000123 word -> 123
001230 word -> 1230
0123 word -> 123

Zoals je ziet word alleen de 0 wegehaald die voor een cijfer 1 of hoger staat, maar dit is niet de bedoeling. Wanneer in het database de code 0123 staat moet hij ook 0123 meegeven zodat ik het later kan opvragen. Veldconversie? Integer ipv een variant misschien? Als je een veld niet definieert wil VB nog wel is gaan gokken hoorde ik. Mijn vraag is kan het misschien hier aan liggen zoja hoe kan ik dit doen want Dim List4.Itemdata as Integer kan niet.

Vriendelijke groet,

[ Voor 4% gewijzigd door Dirk op 09-10-2018 22:48 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Itemdata is bij mijn weten een integer of een long, dus wordt 0123 geïnterpreteerd als 123. Simple as that.

Als je op F1 mept als je op itemdata staat met je cursor kun je het checken. Maar je kunt het type dus NIET wijzigen....

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 24-05 09:13

Janoz

Moderator Devschuur®

!litemod

Als de voorloopnullen van belang zijn is het dus geen getal. Waneer het namelijk een getal zou zijn zou 000012 gelijk zijn aan 12. Je datatype moet daarom ook geen integer datatype zijn, maar een string.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
hmm, en hoe kan ik dat defineren dan als een string?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op 04 juli 2004 @ 21:51:
hmm, en hoe kan ik dat defineren dan als een string?
Dat kan NIET, zoals ik al eerder zei. Het .itemdata propterty is een int/long.

Je kunt wel zelf ergens de strings bijhouden (in een array ofzo), en de index van die string in de array in het itemdata property gooien.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
RobIII schreef op 04 juli 2004 @ 21:56:
[...]

Dat kan NIET, zoals ik al eerder zei. Het .itemdata propterty is een int/long.

Je kunt wel zelf ergens de strings bijhouden (in een array ofzo), en de index van die string in de array in het itemdata property gooien.
Hmm ik zou eens gaan zoeken hoe zo array precies werkt. Echter is er nog een vraagje (weet niet of ik hiervoor speciaal een topic moet openen). Wanneer ik 2 listboxen heb met de volgende data in List1:

Brood
Chocolade
Pindakaas
Pasta

En ik selecteer de pinkaas (nummer 3 in de lijst) is het dan ook mogelijk om het 3e item in List2 te selecteren?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ja, met behulp van wat programmeerwerk is dat makkelijk te doen. Hint: Gebruik het click event en het listindex property. Meer ga ik niet verklappen.

We gaan er hier van uit dat je enige moeite zelf doet, en we kauwen dus niet alles voor. Ook gaan we er van uit dat je de basis van programmeren al een beetje onder de knie hebt.

Overigens is het aan te bevelen je controls gewoon een naam te geven als "lstTaarten" ofzo. List4 is zo nikszeggend, vind je ook niet?

[ Voor 19% gewijzigd door RobIII op 04-07-2004 22:17 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
RobIII schreef op 04 juli 2004 @ 22:15:
Ja, met behulp van wat programmeerwerk is dat makkelijk te doen. Hint: Gebruik het click event en het listindex property. Meer ga ik niet verklappen.

We gaan er hier van uit dat je enige moeite zelf doet, en we kauwen dus niet alles voor. Ook gaan we er van uit dat je de basis van programmeren al een beetje onder de knie hebt.

Overigens is het aan te bevelen je controls gewoon een naam te geven als "lstTaarten" ofzo. List4 is zo nikszeggend, vind je ook niet?
Dat over die List ja daar heb je gelijk in, ik heb overal namen behalve voor de Listboxen. Over die code. Ik heb een aantal uur gepuzzeld en wat gegoogeld maar ik heb het gevoel dat het nergens word uitgelegd. Ik vond deze het dichts in de buurt komen:
Visual Basic 6:
1
2
3
4
5
For i = 0 To List4.ListCount
If List4.Selected(i) = List4.Text Then
List5.Selected(i) = True
End If
Next i

Klopt dit al een beetje of zit ik totaal op de verkeerde weg?

[ Voor 2% gewijzigd door gorgi_19 op 04-07-2004 23:41 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20:27

gorgi_19

Kruimeltjes zijn weer op :9

Even code - tags toegevoegd, dat leest wat makkelijker voor iedereen. :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Sorry drukte op quote ipv edit.
Om deze post maar even nuttig te maken heb ik een code gevonden die het wel selecteerd maar daarna krijg ik een foutmelding:

code:
1
2
3
4
5
For i = 0 To List4.ListCount
If List4.Selected(i) = True Then
List5.Selected(i) = True
End If
Next i


De melding is: Invalid property array index

Wie weet wat hier mis gaat?

[ Voor 255% gewijzigd door Verwijderd op 05-07-2004 00:54 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Nogmaals: Gebruik je CLICK event. Zal 't wel voor je uitschrijven, maar dat zijn dan ook meteen je laatste credits bij mij.

code:
1
2
3
Private Sub lstBlah_Click()
    lstAppelflap.ListIndex = lstBlah.ListIndex
End Sub

Dan ga ik dus uit van:
• 2 Listboxes (lstBlah en lstAppelflap)
• Allebei de listboxes hebben evenveel items (je mag zelf de fout afvangen als dit niet het geval is, met behulp van het ListCount property)

Doe jezelf een lol, en pak er eens de helpfile bij, of een goeie tutorial. Dit is écht, zonder flauw te willen doen, erg basic stuff.

Je probleem staat waarschijnlijk, zoals je zelf al aangeeft, niet precies uitgelegd op het www zoals jij dat graag zou willen. Dat is dan ook helemaal geen probleem. Programmeren is zélf denken. Met afkijken en copy/paste kom je een heel eind, maar als je het dan toch zo wil doen, probeer dan te begrijpen wat je nou precies afkijkt of copy/pasted. Als je het principe begrijpt kun je het voortaan zélf (en meestal nog efficiënter ook, omdat je je code schrijft zoals het moet zijn voor jouw project, niet zoals het in iemand anders z'n project moest zijn).

Je hebt een boel gereedschappen (properties, methods, events, objecten en ga zo maar door...), die je zelf dient te gebruiken naar je eigen inzicht om een programma te maken. Net zoals een timmerman op school ook leert om een hamer en zaag te gebruiken, maar waarschijnlijk niet exact leert hoe hij een <noem eens iets> moet maken. Toch kunnen de meeste timmermannen met het juiste idee en/of tekening meestal wel maken wat je wil, zonder dat iemand ze dat ooit heeft voor gedaan.

overigens kon ik op google genoeg vinden (m.b.v. mijn hint die ik een aantal posts geleden gaf).

Tot slot nog een laatste overweging: Listboxes zijn niet bedoeld om "meerdere colommen" data weer te geven. Ik vermoed dat dat is wat je probeert te doen (met dank aan mijn kristallen bol :P ). Je kunt in dat geval veel beter een listview of een (data)grid gebruiken. Dat klopt dan interfacetechnisch ook meteen.

[ Voor 104% gewijzigd door RobIII op 05-07-2004 01:35 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
Ze hebben inderaad allebij even veel items. Over dat uitproberen, ja dat weet ik. Ik kan mij nog goed herinneren dat ik uren, soms dagen ergens met PHP aan het kloten was. Het probleem is echter als beginner, waar moet je beginnen. Je hebt wat boeken uit de bieb geleent, wat winsock tuts gevolgd en dan kom je met zo'n, wat je al noemde, basic vraag. Bedenk echter wel dat wanneer je nog nooit echt met het Listbox element hebt gewerkt dit even nieuw is. Ik kan begrijpen dat hier dagelijks mensen komen die niks hebben geprobeerd, en denken: Ach hun lossen het wel voor mij op. Dat kan inderaad irritatie opleveren maar ik krijg hier de indruk dat jij mij zo bestempelt wat ik echter dan niet terrecht vind. Dit was wellicht een van mijn langste mening reply ooit _/-\o_

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Mjah sorry hoor maar ondertussen heb ik geen zin meer in dit topic.

Laat ik het kort samenvatten: koop een boek :) Zoek eens bij Amazon naar 'Teach yourself Visual Basic in 21 days', kost $20.39 en bespaart jou (en ons en vooral RobIII ;) ) veel problemen.

Programming & Webscripting is nu eenmaal een forum over programmeren, niet over het leerproces van programmeren, en dit topic is gewoon een groot aan-het-handje-neem proces om jou wat basisprincipes over VB uit te leggen. Helaas, maar daar is GoT noch Programming & Webscripting voor bedoeld :)

Professionele website nodig?

Pagina: 1

Dit topic is gesloten.