Toon posts:

[VB] Reload/Refresh formulier

Pagina: 1
Acties:

Verwijderd

Topicstarter
Wij hebben een listview object met adresgegevens. Deze adresgegevens worden in een database gezet dmv een losstaand invoerformulier. Na invoeren van deze gegevens moet het 1e formulier automatisch de ingevoerde gegevens bijwerken in de listview. Dit gebeurt helaas niet.

We hebben al geprobeerd om het formulier te unloaden en vervolgens weer te loaden, maar dit werkt niet.
Ook hebben wij geprobeerd te refreshen, maar ook dit lukt helaas niet.

Wie kan ons helpen?

Verwijderd

een sub/functie/class maken die die listbox opnieuw invult (oftewel:
(for loop kun je in for each veranderen als je vb.net hebt maar heb je niet geloof ik)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
private sub getadres()
hoeveelitems = 0
'database aanroepen om adresgegevens op te vragen
' while not database.eof
' hoeveelitems = hoeveelitems + 1
' adres(hoeveelitems) = adres wat je uit db haalt
' wend
end sub

private sub adresrefresh()
dim hoeveelitems as integer
dim adres(1 to 1000) ' array voor adressen

call getadres()

form1.list1.clear

for a = 1 to hoeveelitems
list1.additem (adres(hoeveelitems))
next a

list1.refresh

end sub


kan zijn dat er een aantal syntax foutjes in staan maar dit is ongeveer hoe je het het beste kan doen.


/edit/

wat je OOK kan doen is om direct nadat je een nieuw adres hebt ingevoerd, ff de regel erachter plakken nadat je hem in de db hebt opgeslagen:

code:
1
list1.additem(adrestextbox.text)


das het makkelijkste, maar ik zou de eerste oplossing nemen, aangezien je die overal kunt gebruiken in je programma...

[ Voor 33% gewijzigd door Verwijderd op 12-03-2003 13:12 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op 12 March 2003 @ 13:07:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
private sub getadres()
hoeveelitems = 0
'database aanroepen om adresgegevens op te vragen
' while not database.eof
' hoeveelitems = hoeveelitems + 1
' adres(hoeveelitems) = adres wat je uit db haalt
' wend
end sub

private sub adresrefresh()
dim hoeveelitems as integer
dim adres(1 to 1000) ' array voor adressen

call getadres()

form1.list1.clear

for a = 1 to hoeveelitems
list1.additem (adres(hoeveelitems))
next a

list1.refresh

end sub
Ik wil niet zeuren FireAngelnl, maar waarom gooi je eerst alles in een array en dan weer in de listview? Kan toch meteen in de listview?

Ik heb zelf meestal een sub "FillList" ofzo (public). Deze cleared de list eerst en voert dan alle nodige zaken uit om 'm te vullen (DB query-en enzo). Zo kun je vanuit een ander form de FillList van het form met de listview aanroepen om 'm te "refreshen".

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public sub FillList()
 dim li as listitem

  myListview.enabled = false
  myListview.listitems.clear
' database aanroepen om adresgegevens op te vragen
  set rs = myConn.Execute "Select bla from bla"
  while not rs.eof
    set li = myListview.addItem rs.Fields("Naam")
    li.tag = rs.fields("ID")
    li.subitems(1) = rs.fields("Achternaam")
    li.subitems(2) = rs.fields("Adres")
'   ...
'   ...
  wend
  myListview.enabled = true
end sub


Ook is het aan te raden je listview effe te disablen voordat je 'm gaat vullen en weer enablen als je klaar bent. Dat maakt 't een stuk sneller!

Meestal sla ik in de TAG ofzo van een listitem het originele record-id ofzo op zodat je makkelijk kunt achterhalen welk record er gewijzigd/geklikt/whatever is...

[ Voor 106% gewijzigd door RobIII op 12-03-2003 13:27 ]

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

RobIII, je hebt gelijk hahaha, kheb vannacht niet geslapen door omstandigheden dus ben niet helemaal wakker meer, maargoed dit wordt dan de code:

de array is wel handig aangezien je die kunt gebruiken in andere delen van je code, aangezien je anders elke keer die listbox moet uitlezen, of de db moet openen..

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private sub adresrefresh()
dim hoeveelitems as integer
dim adres(1 to 1000) ' array voor adressen

form1.list1.clear
hoeveelitems = 0
'database aanroepen om adresgegevens op te vragen

' while not database.eof

' hoeveelitems = hoeveelitems + 1
' adres(hoeveelitems) = adres wat je uit db haalt   (deze is handig in een array
 voor gebruik in je verdere code zoals zoekscripts
list1.additem (adres(hoeveelitems))

' wend
list1.refresh
end sub



/edit/
Meestal sla ik in de TAG ofzo van een listitem het originele record-id ofzo op zodat je makkelijk kunt achterhalen welk record er gewijzigd/geklikt/whatever is...
Netjes, hak nog niet eens aan gedacht |:( maarja zal wel komen omdat mensen soms slaap nodig hebben :z


TjeerdB:
code van robIII is trouwens stuk netter dan dat van mij hoor, ik ben niet helemaal wakker..
/edit/

[ Voor 99% gewijzigd door Verwijderd op 12-03-2003 13:22 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op 12 maart 2003 @ 13:15:
[...]
code:
1
2
3
[...]
' ... voor gebruik in je verdere code zoals zoekscripts
[...]

[...]
Daar gebruik je de DB toch ook voor? :?

code:
1
Select bla from bla where naam = 'janssen'


Kwestie van je filllist een parameter meegeven en opnieuw aanroepen voor je refresh.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public sub FillList(optional strFind as string = "")
 dim li as listitem

  myListview.enabled = false
  myListview.listitems.clear
' database aanroepen om adresgegevens op te vragen
  set rs = myConn.Execute "Select bla from bla"
  if len(strFind)>0 then rs.Filter = "Naam = '" & strFind & "'"
  while not rs.eof
    set li = myListview.addItem rs.Fields("Naam")
    li.tag = rs.fields("ID")
    li.subitems(1) = rs.fields("Achternaam")
    li.subitems(2) = rs.fields("Adres")
'   ...
'   ...
  wend
  myListview.enabled = true
end sub


Wel effe opletten dat je enge tekens enzo afvangt voordat je ze in het filter property knalt. Verder werk ik zelf meestal met stored procedures e.d., maar you get the idea...

[ Voor 31% gewijzigd door RobIII op 12-03-2003 13:27 ]

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

Ik wel :) maar kweet nie of de topicstarter het begrijpt.. das ook reden geweest om het simpel te houden.. Hij wil simpel een refresh subje denk ik, zonder de uitgebrijde "error-handling" routines..
maarja, kheb wel weer wat bijgeleerd:D, over dat opslaan in de tag, dat deed ik eerst altijd met een 2e veld in mn array |:( nooit eerder over nagedacht ook.. 8)7

kzie trouwens ook in je profile dat jij er iets meer vanaf weet dan ik :) kheb dan wel ervaring vanaf mn 9e met programmeren enzo, maar ik heb er nog geen "echte" opleidingen in gedaan, ben dat echter wel van plan.

[ Voor 34% gewijzigd door Verwijderd op 12-03-2003 13:30 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op 12 March 2003 @ 13:27:
[...]
maarja, kheb wel weer wat bijgeleerd:D, over dat opslaan in de tag
[...]
En daarvoor zitten we op GoT. Fijn dat je d'r iets van opgepikt hebt :) Samen komen we d'r wel :*)

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

Haha, jep. Toch handig al die fora, vooral GoT. dr zijn een heleboel kleine dingetjes die bij elkaar een hoop schelen als je ze allemaal ff weet. Varierend van kleine dingetjes mbt hardware en kleine dingetjes mbt programmeren heb ik ongeveer op alle vlakken wel iets bijgeleerd hier.. Iedereen die de technische threads een beetje afstruind(of is het afstruint) leert altijd wel iets bij denk ik.

/edit/

het probleem met mij is ook dak van alles alles wil weten.. Alles over hardware en alles over alle soorten software, van programmeren, tot videobewerken tot geluidsbewerking tot netwerken tot ja.. alles.. Het probleem is alleen dat al die opleidingen zo @#$@duur zijn :'(
/edit/

[ Voor 28% gewijzigd door Verwijderd op 12-03-2003 13:34 ]

Pagina: 1