Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: VB 6.0 ja Data Report

Sivun loppuun

Knappe [15.10.2003 19:55:12]

#

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.

glottis [16.10.2003 08:23:16]

#

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?

Halenism [16.10.2003 09:14:11]

#

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.

Knappe [16.10.2003 16:04:07]

#

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ä?

Halenism [16.10.2003 18:15:25]

#

...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..

Knappe [16.10.2003 19:06:13]

#

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 =)

Knappe [16.10.2003 21:03:39]

#

Kiitos Halenism, nyt toimii!

Käytin seuraavaa lausetta:

Set DataReport1.Sections("Section1").Controls("image2").Picture = LoadPicture(App.Path & "\Kuvat\Rakenne.bmp")

Mikä on tuo MSHFlexGrid ja miten se eroaa käyttämästäni?

Halenism [16.10.2003 23:44:01]

#

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.

Knappe [17.10.2003 02:26:36]

#

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!

Halenism [17.10.2003 08:52:41]

#

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.

Blaze [17.10.2003 22:19:09]

#

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").

Knappe [20.10.2003 01:32:24]

#

Kiitos avusta, nyt toimii siten, että jos: chkStructure.Value = 0
DataReport1.Sections("Section1").Controls("imgStructure").Visible = False

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("lblStructure").Caption = "Static System"

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!

Halenism [20.10.2003 12:21:31]

#

kys2.
No eikös sitä sitten pysty vastaavalla lauseella?
Captionin tilalle vain Text

DataReport1.Sections("Section1").Controls("txtstructure").Text = "Static System"

Knappe [20.10.2003 13:55:00]

#

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?

Halenism [20.10.2003 16:44:02]

#

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?

Knappe [20.10.2003 17:39:07]

#

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.

Halenism [20.10.2003 18:16:53]

#

ö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("lblNIMI").Caption = txtNIMI.Text
Koklaappa kun en itse jaksa..

Mitä tuolla inputfilellä tarkoitat?

Knappe [20.10.2003 20:11:25]

#

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("lblProject").Caption = Title

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 =)

Halenism [20.10.2003 21:07:55]

#

hmm.. kyllä tuon "pitäisi" toimia juuri tuolla
DataReport1.Sections("Section1").Controls("lblProject").Caption = Title.text -hommalla.

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...

Knappe [20.10.2003 21:35:52]

#

Ok, kiitoksia.
Pitää tässä vielä yrittää. Hyvät leffa-illat, palaan luultavasti vielä astialle.

typotuksia? Siis muuttujat väärinkö?


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta