Terve!
Yritän tehdä menun, josta pystyy valitsemaan mitä tietoa datareportissa näytetään. Tein sen ensin If-Then-Else -lauseilla ja sain raporttiin aina tarvittavat tiedot mutta kone alkoi tökkimään kun rivejä alkoi tulla paljon. Aattelin siis kokeilla Select Case -lauseilla mutta ei oikein tunnu toimivan. Alla on lyhennetty pätkä koodia. Siis ainoa joka tökkii on Select Case joka ei käyttäydy kuten luulin sen käyttäytyvän. Kyseessä on kylläkin eka kerta kun sitä kokeilen...
Private Sub cmdOpenReport_Click() Dim chkMenu As Boolean '-----PROJECT INFORMATION (always visible) DataReport1.Sections("temp_detail").Controls("lblProjectInf").Caption = "Project Information" Select Case chkMenu Case chkPanelProp.Value = 0, chkStructure.Value = 0 MsgBox "No Information Selected!", vbOKOnly Case chkPanelProp.Value = 1, chkStructure.Value = 1 DataReport1.Sections("temp_detail").Controls("lblPanelProp").Caption = "Panel Properties" DataReport1.Sections("temp_detail").Controls("lblStructure").Caption = "Static System" DataReport1.Show vbModal 'this shows the preview window for the report Case chkPanelProp.Value = 0, chkStructure.Value = 1 DataReport1.Sections("temp_detail").Controls("lblPanelProp").Visible = False Case chkPanelProp.Value = 1, chkStructure.Value = 0 DataReport1.Sections("temp_detail").Controls("lblStructure").Visible = False DataReport1.Show vbModal 'this shows the preview window for the report Case Else MsgBox "Jokin mättää" End Select End Sub
Tässä on siis kyseessä kahdesta checkboxista joiden avulla valitaan näkyykö molemmat otsikot, vain toinen tai ei kumpikaan. Lisäksi raportissa on textboxeja ja kuvia mutta poistin ne lauseet tästä esimerkistä.
Tarkoituksena on jatkossa pystyä useamman chkboxin avulla vaikuttamaan raportin sisältöön. Tämähän tarkoittaa sitä, että kun ylempänä oleva sisältö muuttuu "näkymättömäksi" on alempana olevan sisällön siirryttävä ylöspäin. Chkboxeja tulee luultavasti olemaan lähemmäs 20 ja yhdellä pystytään hallitsemaan useita otsikoita ja textbokseja. Select Case -vaihtoehtoja tulee siis aika paljon, ja rivejä myös kun jokaisen otsikon ja tekstin visible ja top-ominaisuuksia muutetaan.
Onko ehdotuksia miten tämän saisi tehokkaasti/paremmin tehtyä?
Eihän tämä hyvältä näytä kun pelkästään kahdella chkboxilla tökkii.
Ongelma: kun valitsen molemmat boxit aukea msgbox, jonka pitäisi aueta silloin kun mitään ei ole valittu. Kun taas en valitse mitään, aukeaa raportti, jossa on molemmat otsikot. Jos valitse boxeista vain toisen, ilmestyy taas msgbox.
Löytyykö ketään, joka jaksoi lukea loppuun asti ja vielä tietää miten homma toimii ja paranee?
Kiiti etukäteen!
Saakos noissa Case ... jutuissa olla noita muuttujien määrittelyä? En oo varma mut ainaski eka kerta kun nään tollasta.. Select Case on normaalisti helppokäyttöinen jos sen kanssa ei tarvitse mitän suurta tehdä.
lainaus:
Löytyykö ketään, joka jaksoi lukea loppuun asti ja vielä tietää miten homma toimii ja paranee?
Löytyy, mutta en tästäkään varma ole: kokeile muuttaa Case-lausekkeissa olevat pilkut AND:ksi. Esim. rivi
Case chkPanelProp.Value = 0, chkStructure.Value = 0 'Muuttuisi muotoon Case chkPanelProp.Value = 0 AND chkStructure.Value = 0 'jne. Samat muutokset muihinkin lausekkeihin
Aihe on jo aika vanha, joten et voi enää vastata siihen.