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.
Ihan ensin kannattaa kertoa mikä tietokanta on kyseessä.
Perhana. Unohtui täysin... MS Access 2000:llahan tuo on "luotu". Yhteys ohjelmasta kantaan hoituu tällä hetkellä ADO:lla.
:)
Kysytääs samaan syssyyn, mites homma hoituu SQL:llä?
select * from taulu
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!
ja vielä kerran poijaat(mikse ei tytötkin)...mites homma hoituu sql:llä?
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?!
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.
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?
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.
:) 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.
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?
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?
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 :)
Ei perhana. En ainakaan itekseen saa ollenkaan toimimaan ilman tuota Access-objektia.
:(
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?
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 :(
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...
Aihe on jo aika vanha, joten et voi enää vastata siihen.