Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6 ja tietokannasta tulostaminen

Sivun loppuun

glottis [23.10.2004 17:49:27]

#

Onko mahdollista tulostaa VB:llä tehdyn ohjelman kautta tietokannasta niin, että vain ruudulla näkyvillä oleva tieto tulostuu. Osaan siis tulostaa koko kannan sisällön (ainakin yhden taulun) paperille allekain.

Ohjelmallani pystyn selaamaan taulun tietoja niin, että ruudulle tulee omiin lokeroihinsa vaikkapa henkilön
-etunimi
-sukunimi
-email
-gsm

Miten siis onnituisi yksittäinen tiedon tulostaminen. Jne jne... tai jos listboxista voisi valita kaikkien henkilöiden tiedot jotka tulostaisi.

Mitenköhän onnistuisi? Muutenkin tuo tulostus VB:n kautta on hieman outo aihe allekirjoittaneelle.

remontti-reiska [23.10.2004 17:53:30]

#

Ihan ensin kannattaa kertoa mikä tietokanta on kyseessä.

glottis [23.10.2004 18:06:20]

#

Perhana. Unohtui täysin... MS Access 2000:llahan tuo on "luotu". Yhteys ohjelmasta kantaan hoituu tällä hetkellä ADO:lla.

:)

Extreme [23.10.2004 18:35:06]

#

Kysytääs samaan syssyyn, mites homma hoituu SQL:llä?

juze [25.10.2004 14:51:33]

#

select * from taulu

glottis [25.10.2004 16:26:27]

#

Ei ei pojat. Vastaan itse itselleni ja muut voivat sitten vaikka miettiä siitä. Seuraava koodi hoitaa kyllä tulostuksen, MUTTA se aukaisee samalla Accessin raportin esikatselutoiminnon ja hommassa pitää muutenkin olla Access asennettuna ja raportti valmiiksi luotuna tietokannassa.

Olkoon nappulan nimi vaikkapa Print.

Private Sub Print_Click()
Dim dbName As String
Dim rptName As String
Dim Preview As Long
Const acNormal = 0
Const acPreview = 2
dbName = "c:\laitteistotietokanta\tester2.mdb"
rptName = "Kayttaja_tiedot"
Preview = acPreview 'acNormal
With objAccess
    .OpenCurrentDatabase filepath:=dbName
    If Preview = acPreview Then
        .Visible = True
        .DoCmd.OpenReport rptName, Preview
    Else
        .DoCmd.OpenReport rptName
    End If
End With
End Sub

Moduuliin sijoitan koodinpätkän

Public objAccess As Object

Kyseisen formin "loadiin" tulee sitten vähintäänkin seuraava pätkä koodia:

Set objAccess = CreateObject("Access.Application")

---
Tavoitteena on tosiaan vääntää tuosta myös semmoinen versio, että Accessia ei tarvittaisi taustalla hyörimässä ja pyörimässä lainkaan. Kuten ei tähänkään saakka. Nice? YES!

Extreme [25.10.2004 17:23:55]

#

ja vielä kerran poijaat(mikse ei tytötkin)...mites homma hoituu sql:llä?

glottis [25.10.2004 18:23:39]

#

Extreme kirjoitti:

ja vielä kerran poijaat(mikse ei tytötkin)...mites homma hoituu sql:llä?

Tarkenna hiukan. MySQL? Vai mikä on kyseessä? Tarkoitatko ruudulle vai paperille tulostamista?!

Extreme [25.10.2004 22:55:44]

#

MySQL on kyseessä. Olen tehnyt formin ja nyt siihen formiin pitäisi saada näkymään.

Ideana se, että kun käynnistän ohjelmani se hakee myslistä tiedot formiin.

glottis [26.10.2004 08:15:54]

#

Extreme kirjoitti:

MySQL on kyseessä. Olen tehnyt formin ja nyt siihen formiin pitäisi saada näkymään.

Ideana se, että kun käynnistän ohjelmani se hakee myslistä tiedot formiin.

Jaahans. Tuohan ei mitenkään oikeastaan liity varsinaiseen tulostamiseen ;p

Mutta itselläni tietokantayhteys hoituu Access-tietokantaan ADO:lla. Samaa koodinpätkää voi ehkä kokeilla mySQL:n kohdallla. Mutta kerrohan ensin, että onko sinulla jo tietokantayhteys VB-ohjelmasi ja MySQL:n välillä kohdillaan ja ongelmana on v a i n tuo, että formille pitäisi saada infoa?

mike patto [26.10.2004 14:54:01]

#

Tuota, mennäänköhän tässä nyt ns takapuoli edellä puuhun. Jos onnistut tulostaamaan vb:llä kaikki taulun rivit, ei kai voi olla vaikeaa tulostaa yhtä riviä. Siis ,esim, kannasta (MySql, Oracle, SqlServer, Db2 what ever) haetaan tietoja näytölle, mikset samantien ota talteen tietoja tulostusta varten ? Se onko tulostusohjelma tehty VB:llä, C/C++:lla Pascalilla tms ei pitäisi vaikuttaa mitenkään tietojen hakuun kannasta. Kyseessähän on eri toiminnot. Ohjelmassa on siis 'osia': hae tiedot kannasta, valitse tulostettava(t), tulosta ja lopeta. Tottakai siinä voi olla paljon
muutakin mutta se lienee epärelevanttia tällä kertaa.

Extreme [27.10.2004 12:52:50]

#

:) Juuh, olen selittänyt vähän huonosti.
En ole onnistunut luomaan yhteyttä VB:n ja MySQL:n välillä.
Ja sitten tieten ne pitäisi saada siinä formilla näkymään ja kuten mike patto sanoi, että myös mahdollista tulostaa tiedot. Voin laittaa form:in kuvan illemmalla tänne niin saatte paremman kuvan mitä tarkoitan.

Hellami [27.10.2004 15:05:09]

#

Noh, koitin olla nostamatta kovin vanhaa aihetta, kun uutta jaksanut tehdä. Mitä kaikkia tietokantaohjelmia on? siis sellaisia millä saa tehtyä tiedosto -pohjaisia kantoja (esim .mdb(accesskö?)) Ja onko mitään ilmaista sellaista, arvaten access ei ole?

eakem [27.10.2004 22:35:46]

#

VB:n (ainakin 6 versiossa) mukana tulee apuohjelma Visual Data Manager, jolla voi luoda .mdb (eli access) kantoja, vaikka accessia ei koneella olisikaan. Eli jos sinulla on vb, voit myös luoda tietokantoja ("ilmaisia") ja kehittää sovelluksia joissa niitä hyödynnetään. Muita ilmaisia on tietysti MySQL, muista ei ole sen kummempaa tietoa...
Kaupallisia löytyy huru mycket, Oracle, Sybase, SQL server, mitä liekään...

Tais tämä keskustelu lähteä vähän rönsyilemään, sorry glottis.

Niin, VB:ssä voi tehdä accesista riippumattomia raportteja, VB:ssa on siihenkin oma työkalu valmiina.
MSDN:stä voisi löytyä hakusanalla Data Report ja on siitä täälläkin ollut joskus keskustelua.
Tai sitten lähetät vain yhden tietueen tiedot tulostettavaksi. Se onkin hauskaa puuhaa kun alat komentamaan tulostinta. :)
Onkohan aihetta käsitelty putkassa?

glottis [28.10.2004 19:18:20]

#

eakem kirjoitti:

Tais tämä keskustelu lähteä vähän rönsyilemään, sorry glottis.

Juu, ei se haittaa. Hyvä, että asia liittyy silti tietokantoihin :)

glottis [14.11.2004 10:23:06]

#

Ei perhana. En ainakaan itekseen saa ollenkaan toimimaan ilman tuota Access-objektia.

:(

eakem [14.11.2004 19:40:10]

#

Voisitkos kerrata mikä on tämän hetken tilanne ja siis varsinainen ongelma...

Oliko se edelleen se, että vain näytöllä näkyvät tiedot pitäisi saada tulostettua?

glottis [15.11.2004 19:38:44]

#

Ongelma on siis se, että Accessiin tehty raportti pitäisi saada tulostettua ilman tuota objAccess-hommelin käyttöä. Eli ohjelmasta tulisi ns. ohjelmistoriippumaton. . . (siis, tavallaan).

Eli VB-ohjelmani osaisi tehdä sen itse... kuten se tekee sen itse tietojen tallennuksem,poiston, selauksen ja muokkauksen myötä - ja vieläpä ilman access-ohjelmaa asennettuna :(

eakem [15.11.2004 22:38:28]

#

Ilmeisesti joudut tekemään raportin uudestaan vb:n puolella. Lisäät projektiisi DataEnvironmentin ja DataReportin. Edelliseen määrität kantayhteyden ja sinne voi tehdä valmiita kyselyjä yms. DataReport puolestaan tarvitsee tuon DataEnvironmentin, jonka kautta se hakee tiedot kannasta.

Jos tarvitset vain yksinkertaista tulostustoimintoa niin silloin voisi ajatella että lähetät tiedot tulostimelle printer.print komennolla. Tuo DataEnvironmentin / DataReporttien käyttö on kyllä suositeltavaa jos raportointitarpeita on enemmän.
DataReport on periaatteessa ihan samanlainen kuin access raportti mutta en tiedä voiko accessilla tehtyä raporttia jotenkin "irroittaa" accessista ja importata vb-projektiin...


Sivun alkuun

Vastaus

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

Tietoa sivustosta