Yritän parannella erään mitoitusohjelman käyttöliittymää Visual Basicilla.
Lisäsin tekemääni Data Reportiin kuvan (RptImage). Hain kuvan raporttiin Properties-ikkunan Picture-"ominaisuuden" avulla. Kuva on siis tallennettu kovalevylle ja aina kun uutta mitoitustapausta (=rakennetta) käsitellään, tallentuu kuva uudesta rakenteesta vanhan päälle. Kuva ei kuitenkaan päivity raporttiin vaan siinä pysyy sama vanha kuva, jonka alunperin hain Properties-ikkunan kautta. Millainen olisi siis lause esim. form_load -tapahtuman tai CommandButtonin alla, joka lataisi raporttiin kovalevyltä uuden kuvan vanhan tilalle?
Varmaankin tosi yksinkertainen juttu, mutta näin aloittelijana tuo Data Report käy jotenkin hämäämään, ei taida käyttäytyä aivan samalla tavalla kuin tavallinen lomake.
Data Report ilmeisesti passiivinen/staattinen objekti, joka pitää luoda joka kerta erikseen. Vähän samaan tapaan kuin tekisit paperille raportin ja yrittäisit päivittää sen kirjoittamalla toiselle paperille...
Eli jos mahdollista niin toista tässä uudessa tapauksessa se sama data reportin luontiprosessi kuin edelliselläkin kerralla... vai?
lainaus:
Data Report ilmeisesti passiivinen/staattinen objekti, joka pitää luoda joka kerta erikseen. Vähän samaan tapaan kuin tekisit paperille raportin ja yrittäisit päivittää sen kirjoittamalla toiselle paperille...
Eli jos mahdollista niin toista tässä uudessa tapauksessa se sama data reportin luontiprosessi kuin edelliselläkin kerralla... vai?
Joo, noin muistelisin itsekin.. eli että lennosta ei sisältöä pysty muuttamaan.
lainaus:
Eli jos mahdollista niin toista tässä uudessa tapauksessa se sama data reportin luontiprosessi kuin edelliselläkin kerralla... vai?
Eipä taida tuo minulta onnistua, olen sen verran aloittelija näissä puuhissa... Pystytkö tarkentamaan/selventämään, mitä tarkoitit?
Luultavasti minun kannattaa kuitenkin yrittää luoda tuo raportti jollain muulla tavalla, tuntuu tuo Data Report sen verran jähmeeltä kun pitäisi käyttää kuvia ja kaavioita. Data Report vain tuntui aluksi hyvältä valmiine sivu-layouteineen jne.
Onko siis teillä kokeneemmilla ehdotuksia ja vinkkejä?
...Mikäli kukaan ei kumoa tuota reportin passiivisuutta....
Jollain tavallahan sinä sen data reportin luot... esim. painikkeella joka käynnistää reportin.
Kun tiedot ovat muuttuneet, käynnistä tästä painikkeesta raportti uudestaan(Jolloin se tekee täysin uuden raportin sen hetkisillä arvoilla).
Properties ikkunaa olen pyrinyt välttämään, mutta ainakin lisäämällä rptimagen ja määrittelemällä sen sisältö tulosta-nappulan alla tyyliin:
Set DataReport1.Sections("section1").Controls("kuva").Picture = MSHFlexGrid1.Picture toimii hyvin ja kuva muuttuu sen mukaan mitä mshflexgridissä on.. mutta tämä siis vaatii juuri sen että reportti pitää käynnistää aina uudelleen mikäli kuva on muuttunut..
lainaus:
Jollain tavallahan sinä sen data reportin luot... esim. painikkeella joka käynnistää reportin.
Kun tiedot ovat muuttuneet, käynnistä tästä painikkeesta raportti uudestaan(Jolloin se tekee täysin uuden raportin sen hetkisillä arvoilla).
Aivan oikein, Data Report aukeaa kun painan painiketta ja silloin tietojen pitäisi päivittyä...
Pitää kokeilla antamiasi ohjeita, jos osaan...
Kiitos paljon! Lisäohjeetkaan eivät olisi pahitteeksi =)
Kiitos Halenism, nyt toimii!
Käytin seuraavaa lausetta:
Set DataReport1.Sections("Section1").Controls(
Mikä on tuo MSHFlexGrid ja miten se eroaa käyttämästäni?
lainaus:
Mikä on tuo MSHFlexGrid ja miten se eroaa käyttämästäni?
Äää.. älä siitä välitä, otin vain kopion omasta koodistani ja siinä oli käytetty tuommoista.. mshflexgrid on taulukko jossa voidaan näyttää tietokannan tietoja ja sen taulukon tulostaminen oli omassa ohjelmassani tehty tuolla pasteamallani koodilla.
Mshflexgrid ei liity tavallisten kuvien käsittelyyn mitenkään joten pysy vain siinä mitä olet tehnytkin.
Ok!
Tiedätkö sinä (tai joku muu) millä lauseella saan Data Reportista jonkun "Sectionin" näkymättömäksi ja näkyväksi Checkboxin avulla?
Haluan tehdä valikon, jolla pystyn valitsemaan ne tiedot, jotka haluan näyttää. Tämä voi myös koskea esim. "Labelia" tai muita Data Reportin objekteja.
Mikä mättää kun Data Reportin tekemä raportti on täynnä ylimääräisiä sivuja?
Kiitos taas!
En nyt pääse 8 tuntiin vbhen käsiksi, mutta oletko kattonu ettei siellä ole yksinkertaisesti "enabled" tai "visible" arvoja?
Eli ...miten tuota checkboxia käytettiinkään...
if checkbox.value = true then Set DataReport1.Sections("Section1").visible = true"
if checkbox.value = false then Set DataReport1.Sections("Section1").visible = false"
En tosiaan tiedä tuosta mutta olisi VBmäistä jos noin toimii.
Data Reportti tekee sivuja käsittääkseni niin paljon kuin datasourcessa on.... tietueita?
Ainakin ite tappelin tuon kanssa joskus ja sivuja tuli yhtä paljon kuin datasourceksi määritellyn haun tulos..
Homma korjaantui kun tein reportin alkuun oman datasourcen jossa oli vain yksi tieto.. ja annoin sen reportin sourceksi.
Sectioneiden sisältö, eli se mitä report todellisuudessa näytti määriteltiin muualla, mutta tuo oma yhden tietueen source oli sitä varten koska Report vaatii toimiakseen jonkin datasourcen.
Jos noista ei ole apua niin toivottavasti joku muu kerkeää auttamaan enemmän.
If Check1.Value = 1 Then MsgBox "laatikossa on ruksi"
If Check1.Value = 0 Then MsgBox "laatikossa ei ole ruksia"
Kakkonen tarkottaa, että laatikko on harmaana ("grayed out").
Kiitos avusta, nyt toimii siten, että jos: chkStructure.Value = 0
DataReport1.Sections("Section1").Controls(
Eli, kuva ei näy jos en valitse sitä.
1. Miten saisin kuvan alapuolella olleen objektin, esim. rptTextBoxin siirtymään ylöspäin kun kuva on näkymtön,
ettei raporttiin jää tyhjiä kohtia?
Olen tehnyt sen niin, että seuraavan objektin Top-ominaisuus pienenee kuvan korkeuden verran. Onko jotain muuta tapaa tehdä sitä? Tuntuu työläältä kun raporttiin valittavia objekteja tulee olemaan runsaasti.
2. Tiedän, että "rptLabelin" sisällön pystyy määräämään sekä Properties-valikosta, sekä esim. tällä lauseella:
DataReport1.Sections("Section1").Controls(
Pystynkö jotenkin muuttamaan/määräämään myös "rptTextBoxin" sisällön vastaavalla lauseella? En käytä raportissani tietokannan tietoja, olen vain luonut yhteyden tyhjään tietokantaan, jotta Data Report suostuu toimimaan.
Kiitti etukäteen!
kys2.
No eikös sitä sitten pysty vastaavalla lauseella?
Captionin tilalle vain Text
DataReport1.Sections("Section1").Controls(
Herjaa seuraavaa:
Run-time error '438'
Object doesn't support this property or method
Tämä onkin huonompi homma ellen saa toimimaan, lähtee koko projektilta pohja...
Löytyiskö apua/ratkaisua?
joo ei näköjään ole semmoista proprtyä.. tarvitko siis samanlaista textboxia kuin normaalistikin VBssä.. eli sellaista johon käyttäjä syöttää jotain?
Mietin vaan että onnistuuko se ollenkaan data reportissa kun se on vaan tulostamista varten?
Vai mitähän varten kaipaat rptTextBoxia?
Pitäisi saada käyttöliittymään syötetyt tiedot, kuten Nimi, Projektin nimi jne. näkymään DataReportissa. Tietojen pitäisi löytyä inputfilestä. Kuvittelin, että saisin ne raporttiin rptTextBoxilla.
öms öms... saathan sinä jossakin muualla syötetyt tiedot näkymään reportissa lbl-kentässä.
Eli jos sulla on käyttöliittymässä kenttä txtNIMI niin siihen syötetyn tiedon saat reporttiin käsittääkseni tyyliin
DataReport1.Sections("Section1").Controls(
Koklaappa kun en itse jaksa..
Mitä tuolla inputfilellä tarkoitat?
Ohjelma tallentaa syötetyt inputit ja laskutomitukset input.log -tiedostoon. Eli, projektin tunnistetiedot, rakenteen tiedot sekä laskujen lopputulokset löytyvät input.log -tiedostosta kun laskutoimitukset on tehty.
Ne pitäisi saada raporttiin, mutta en osaa hakea niitä.
Käyttöliittymässä on TexBox nimeltä Title, johon syötetään projektin nimi. Olen yrittänyt hakea sitä raporttiin lauseella:
DataReport1.Sections("Section1").Controls(
Tällä lauseella ohjelma ei herjaa, mutta ei myöskään näytä projektin nimeä. Jos muutan lauseen lopun => Caption = Title.Text ,ohjelma herjaa pistettä: Invalid qualifer
Elikkä, osa tiedoista tulisi saada raporttiin TexBoxeista ja ComboBoxeista, sekä laskujen lopputulokset tulisi saada raporttiin input.log -tiedostosta. Kaikki kyseiset tiedot löytyvät samasta tiedostosta, mutta olisi hyvä jos syötettävät input tiedot siirtyisivät suoraan raporttiin.
Siis tällaista. Toivottavasti et menetä hermojasi, oon varmaankin muutaman kaljan velkaa =)
hmm.. kyllä tuon "pitäisi" toimia juuri tuolla
DataReport1.Sections("Section1").Controls(
Onko varma että boxien nimet ym on oikein eikä ole typotuksia?
kokeile vaikka ...").Caption = "Gladiaattori alkaa"
ja jos edelleen tulee virhettä tai ei näy mitään on vika jossain muussa kuin oikean päätteen valitsemisessa.
Tuo "labelinnimi").Caption = TekstiBoxinnimi.Text pitäisi 99% varmuudella toimia....
Tiedostosta luku(lajittelu) on mulle hieman vieras homma...
Ok, kiitoksia.
Pitää tässä vielä yrittää. Hyvät leffa-illat, palaan luultavasti vielä astialle.
typotuksia? Siis muuttujat väärinkö?
Aihe on jo aika vanha, joten et voi enää vastata siihen.