[vb6 / database]

Pagina: 1
Acties:

  • Zeppo
  • Registratie: Januari 2002
  • Laatst online: 10-06-2022
vraag:

Ik heb een mainform met daarop een datagrid gevuld met een Recordset.
Wanneer de gebruiker dubbelklikt op een record, verschijnt een detailscherm mat daarin alle info in het geselecteerde record.

Nu wil ik op dat detailscherm een vorige / volgende knop plaatsen waarmee de gebruiker (logisch) de detailgegevens van het vorige / volgende record uit het onderliggende form kan ophalen.

Zover lukt het wel om de bookmark te verplaatsen via onderstaande code, maar het 'actieve record' wijzigt niet mee in het onderliggende datagrid. Iemand een oplossing?

Wie o wie?

De code op het detailscherm:

Private Sub cmdNext_Click() ' user clicked "next record"

Dim v As Variant

With mainform.DataGrid1
v = mainform.DataGrid1.GetBookmark(1)
' Remove previously saved bookmark from collection
If .SelBookmarks.Count <> 0 Then
.SelBookmarks.Remove 0
End If
' Append your bookmark to the collection of selected rows
If Not IsNull(v) Then
.SelBookmarks.Add v
End If
End With

End Sub

-


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Het enige wat je in deze code doet is de bookmark op positie 1 ophalen, en die op positie 0 zetten. Wie vertelt je dat de bookmark op positie 1 wijst naar het volgende record?

Je zult een functie moeten maken die 't volgende record ophaalt uit je recordset en weergeeft in het detailscherm. En om je daarin goed te kunnen helpen heb je nu iets te weinig info gegeven over bijvoorbeeld de manier waarop je de gegevens naar je detailscherm brengt (of daarin ophaalt).

Als je bijvoorbeeld de ID van het te tonen record meegeeft, zou je met de previous/next knoppen de volgende lagere of hogere ID op kunnen halen en dat record tonen. Maar misschien werk je wel heel anders: iets meer info dus graag! ;)

Edit:
Of begrijp ik je verkeerd en wordt in je detailscherm alles goed weergegeven, maar in je hoofdscherm niet? Dat is me namelijk niet helemaal duidelijk...

[ Voor 32% gewijzigd door OZ-Gump op 28-01-2005 15:55 ]

My personal website


  • Zeppo
  • Registratie: Januari 2002
  • Laatst online: 10-06-2022
Wanneer ik vanuit het mainform dubbelklik op het record, dan laad ik het detailform. Vervolgens plemp ik alle beschikbare gegevens met statements als "detail.Naam.Text = rs.Fields("personen.naam")" in de beschikbare velden, en daarna toon ik het detailscherm pas.

Het unieke id van het record zit als verborgen veld op het detailform, dus wil de gebruiker iets aanpassen in het detailform, dan kan ik mbv het rec_id makkelijk een update statement uitvoeren

Ik neem aan dat ik bij vorige / volgende eigenlijk een soort rs.movenext / rs.moveprevious moet doen maar ik heb nog geen idee hoe.

Edit:
/quote
Of begrijp ik je verkeerd en wordt in je detailscherm alles goed weergegeven, maar in je hoofdscherm niet? Dat is me namelijk niet helemaal duidelijk...
/quote

Nee, alles wordt correct weergegeven, zowel in detailscherm als in hoofdscherm, maar wat ik wil bereiken is dat de gebruiker niet eerst het detailscherm moet sluiten en dan in het hoofdscherm dubbelklikken op het volgende record om de detailgegevens van het volgende record te bekijken.
Ben ik zo duidelijk?

[ Voor 31% gewijzigd door Zeppo op 28-01-2005 16:00 ]

-


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Omdat je de gegevens zelf in alle textboxen plempt, zul je dat ook moeten doen bij het verplaatsen naar het vorige / volgende record. Het verstandigste is dus ook als je dat in een aparte procedure hebt gestopt: die kun je dan ook aanroepen voor het oproepen van het vorige / volgende record. Als je recordset op het hoofdscherm staat, zou je daar een public procedure kunnen maken die ervoor zorgt dat er in de recordset naar het vorige / volgende record gesprongen wordt, om vervolgens het detailscherm opnieuw op te bouwen.

Het is echter wel een beetje eng dat je enerzijds de gegevens ophaalt in je hoofdscherm, om ze vervolgens eventueel aan te passen vanuit je detailscherm. Je zou 't jezelf een stuk makkelijker maken als je alle database-functionaliteit in een aparte klasse zet, die je aanroept als je iets nodig hebt.

My personal website


  • Zeppo
  • Registratie: Januari 2002
  • Laatst online: 10-06-2022
Het licht is hier inderdaad een beetje aangegaan. Ik ga het zometeen eens proberen met een Public procedure, en die consequent gebruiken. Laat nog weten of dit gelukt is, maar dat wordt wel wat later.

bedankt voor de input!

-


  • Zeppo
  • Registratie: Januari 2002
  • Laatst online: 10-06-2022
Is perfect gegaan met een public sub. Dank voor de input!

-

Pagina: 1