Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: Tietokantaneuvoja aloittelijalle

Sivun loppuun

jaakko_kataja [28.10.2005 20:26:56]

#

Ensinnäkin kiitoksia Antille tunnuksen nopeasta aktivoinnista!

Omasta ohjelmointitaustastani sen verran, että olen jonkin verran säätänyt PHP-, C++- ja Java-ohjelmointikielillä. Perusteet on kaikista jokseenkin hallussa, mutta mikään noista kielistä ei oikein tunnu soveltuvan graafisten Windows-ohjelmistojen tekemiseen. C++ ja Java soveltuvat varmasti loistavasti tarkoitukseen, jos on viitseliäisyyttä perehtyä tarkemmin.

Tuossa pari päivää sitten tuli vastaan Microsoftin Visual Basic Express Edition Beta 2 -ohjelmisto, joka tuntuu soveltuvan tarkoitukseeni varsin mainiosti, eikä vähiten ohjelman ohessa tarjottavien loistavien videotutoriaalien ansiosta.

Tarkoituksenani on tehdä tuttavalle pieni graafinen Windows-ohjelma, jonka tekemisen ainoana kompastuskivenä on oikeanlaisen tietokantaratkaisun päättäminen. Tuossa jo aiemmin mainitsemassani Bob Taborin video-opassarjassa tehdään tietokantaharjoituksia käyttäen Microsoftin SQL Server 2005 Express Edition -ohjelmistoa. Jos kaikki olisi mennyt kuten olisin halunnut, olisin todennäköisesti jo saanut ohjelmani tehtyä ajat sitten, mutta tuo ohjelmisto ei asennu koneelleni – ei sitten kirveelläkään! Olen yrittänyt asentaa ohjelmistoa saman asennusohjelman kautta kuin asensin tuon varsinainen kehitysympäristönkin, mutta asennuksen loppupuolella tulee virheilmoitus “Microsoft SQL Server 2005 CTP Setup has encountered a problem and needs to close...ö. Muillakin on ilmennyt samaa ongelmaa (googletuksen perusteella), mutta korjausehdotuksiksi tarjotut rekisterimuokkaukset ja kaikkien .Net-ohjelmistojen poisto ja uudelleenasennus eivät omassa tapauksessani ole auttaneet. Olisiko kellään tarjota vinkkejä tähän paljon päänvaivaa tuottaneeseen asennusongelmaan?

Tällä hetkellä etenemisvaihtoehtoja on neljä:
1.Saada olemassaoleva ohjelmisto asentumaan.
2.Odottaa uutta versiota SQL Server -ohjelmistosta, joka toivottavasti suostuisi asentumaan taidoillani ja tietokonelaitteistollani.
3.Keksiä joku uusi tietokantaratkaisu.
4.Antaa koko homman olla. :)

Eli jos tuota varsinaista tietokantaohjelmistoa ei saa asennettua, pitää keksiä joku vaihtoehtoinen tapa. Ohjelman tietokannasta ei ole tulossa mikään järjettömän suuri ja monimutkainen; yksi taulu, jossa on alle kymmenen saraketta ja johon talletettava tieto on lopulta täysin staattista (kun kaikki tarvittava on lisätty ja muokattu). Rivejä tulisi korkeintaan muutamia satoja. Kertokaa jotain vaihtoehtoisia tapoja tuollaisen tietokannan tekemiseen ja jos mahdollista, laittakaa linkkejä niiden käytöstä kertoviin tutoriaaleihin (aika heikosti olen löytänyt oppaita parin päivän googletuksella) tai kertokaa itse, miten pääsen sen kanssa liikkeelle. Suotavaa olisi kuitenkin, että “loppukäyttäjänö ei tarvitsisi asennella mitään ylimääräistä koneelleen. Ja tuosta pääsen vielä yhteen mieltäni askarruttaneeseen kysymykseen: jos saan tuon SQL-serverin jotenkin toimimaan ei kai loppukäyttäjän tarvitse omalle koneelleen kyseistä ohjelmistoa asentaa, jotta sillä tehtyjä tauluja pystyisi käyttämään? Jos noin ison ohjelmiston joutuu asentamaan tällaisen pikkurävellyksen takia, ei sen käytössä sitten ole mitään järkeä tässä tapauksessa. :D

Ilmeisesti ainakin Microsoftin Officen mukana tulevan Accessin avulla pystyisi jonkinlaisen tietokannan väsäämään myös Visual Basicin kanssa käytettäväksi? Onko tuo miten hyvä ratkaisu ja vaatiiko se loppukäyttäjän koneelta Accessin? Tuossakin on vaan se homma, että itse en omista Microsoftin Officea, joten joutuisin väsäämään tietokannan ja koulut koulussa.

Kertokaa vaan juttuja kaikista mieleen tulevista ratkaisuehdotuksista. Kiitoksia avusta etukäteen. :)

ajv [28.10.2005 21:09:48]

#

Pitkään kysymykseen lyhyt ja ytimekäs vastaus:
jos käytät jotain oikeaa SQL-palvelinohjelmistoa kehitysvaiheessa, täytyy softan päästä siihen käsiksi myös käyttövaiheessa. SQL-palvelimen ei kuitenkaan välttämättä tarvitse sijaita käyttäjän koneella, siihen voidaan ottaa yhteys netinkin yli, mutta Microsoft SQL Server 2005:sen käyttö tuollaisessa pikkusoftassa on vähän sama kuin ampuisi kärpästä tykillä :)

Ehdotus: Tallenna data tavalliseen tekstitiedostoon kentät eriteltynä jollakin rietyllä merkkijonolla. Jos kuitenkin haluat käyttää oikeita SQL-kyselyitä, voit tallettaa datan myös Excel-tiedostoon, josta dataa voidaan *en muista millä* ajureilla hakea ihan normi SQL-lauseilla.

setä [28.10.2005 23:18:11]

#

Kyllä Visual Basicilla voi perustaa esim. Access-tietokannan ilman Officen Accessia, suorittaa SQL-kyselyjä jne. Mutta onko nuo tiedot oltava välttämättä tietokannassa vai riittääkö esim. binääritiedosto, jonka käsittely voi olla helpompaa ja toteutus paljon kevyempi.

jaakko_kataja [29.10.2005 12:21:37]

#

setä kirjoitti:

Kyllä Visual Basicilla voi perustaa esim. Access-tietokannan ilman Officen Accessia, suorittaa SQL-kyselyjä jne. Mutta onko nuo tiedot oltava välttämättä tietokannassa vai riittääkö esim. binääritiedosto, jonka käsittely voi olla helpompaa ja toteutus paljon kevyempi.

Ei ole mitään väliä, missä tieto sijaitsee, kunhan homman vaan saa tehtyä siten että loppukäyttäjä pystyy lisäämään sitä helposti.

Kerro lisää tuosta "binääritiedostoratkaisusta".

setä [29.10.2005 13:57:55]

#

Itse käytän VB5 ja VB6 Pro versioita ja VB.NET on aika tuntematon. Binääritiedostoon voit määrittää tietueen kentät kuten tietokantaankin Type-määrityksellä, jossa luetellaan kenttien muuttujanimet ja tyypit. Tiedot tallennetaan Put-lauseella ja luetaan Get-lauseella. Tiedostonkäsittelystä varmaan löytyy ohjeita. Tietueen osoite on tavuosoite eli ensimmäinen tietue alkaa osoitteesta 1, seuraava 1 + ensimmäisen tietueen pituus jne. Alussa luetaan tiedosto läpi ja tallennetaan tietue-osoitteet esim. ListBoxin ItemDataan ja ListBoxiin sitten jonkin kentän tieto jota voidaan käyttää hakusanana. Kovin tarkkaan en nyt voi kuvailla toimintoja kun ei ole tietoa millaista tietoa tallennat ja kuinka sitä halutaan lukea.

jaakko_kataja [29.10.2005 19:19:56]

#

Olisiko kellään heittää linkkiä johonkin asiaa käsittelevään tutoriaaliin?

edit: Voi helkkari, oon missannut kokonaan tuon kehitysympäristön oman dokumentoinnin. :D Tuolla näyttäis olevan jotain juttuja näistä tietokannoistakin.

jaakko_kataja [30.10.2005 14:46:30]

#

Lisätään nyt vielä yksi tyhmä kysymys lisää tähän triidiin:
Miten ihmeessä onnistuu tätä vastaavan systeemin tekeminen: http://jaakko.loota.fi/temp/control.png

Eli tuollainen "taulukko", jossa pystyy järjestämään kohteet jonkun sarakkeen ominaisuuden mukaan yms.

esakom [31.10.2005 12:37:20]

#

no joko koodaamalla sen itse tai käyttämällä valmista kontrollia.

1) Itse koodaamalla
taulukossa data ja se järjestellään vaikka aakkosten mukaan nousevasti/laskevasti)

2) valmis kontrolli
vb:ssä taitaa olla noissa ruudukkokontrollissa ominaisuus jota asettamalla saa sen järjestyksen menemään nousevasti/laskevasti, riippuu kontrollista, yleensä joku sort-ominaisuus tai metodi. Joskus hiiren painallus pitää saada jotenkin kiinni kontrollissa ja survaista koodi sinne.

WinC [31.10.2005 13:42:33]

#

Oma ehdotukseni on Access kanta. Hyvä pienille ja miksei vähän suuremmillekkin tietokannoille. Tutustu DataSet luokkaan sekä listview ja dataview kontrolleihin ja niiden käyttöön yhdessä DataSetin kanssa.

Kysyit tuosta "systeemin tekemisestä" niin se onnistuu esim. mainitsemallani listview kontrollilla ja nähtävästi myös dataview kontrollilla.

Niko [31.10.2005 17:02:11]

#

ListView jonka View arvo on Details sitten voit lisätä sarakkeet Columns kohtaan...

DataSetissä on kaikki tarvittava .Select avulla voi suorittaa sql-kyselyitä

Listaan voit lisätä esimerkiksi näin

For each d as datarow in Tiedot.Select()
 Dim item as New ListViewItem
 a.text = "Ensimmäinen sarake"
 a.SubItems.Add("Toinen sarake")
 a.SubItems.Add("Kolmas sarake")

 listview.Items.Add(a)
Next

Tossa beta versiossa tosiaan on ongelmia ja kannattaakin hommata täys versio Expressin hinta tulee olemaan sitten jotain sellasta jonka voi maksaakkin... Mulla oli nimittäin sama ongelma... kokeile ladata jostain RC1... Sitten vielä kannattaa päivittää .NET Framework 2 ei beta sdkohon jotta ohjelmat käännetään uusimmalla kääntäjällä (kuten Framework 1.0/1.1, kakkosessakin itse ide on vain maksullinen)...

jaakko_kataja [05.11.2005 20:12:20]

#

Joo, paljon kiitoksia avustuksesta kaikille!

Tuokin kontrolli varmaan esitellään jossain video-oppaan myöhemmässä osassa, mutta en ole malttanut ladata ja katsoa niitä vielä. :)

Olin melko varma, että tuollainen kontrolli löytyy Toolboxista jostain, mutta helpotti huomattavasti hommaa, kun sai tuon nimen suoraan eikä tarvinnut käydä kaikkia mahdollisia kontrolleja yksi kerrallaan läpi. :)

jaakko_kataja [21.11.2005 20:29:59]

#

Heti kun löysin taas aikaa tälle projektille, törmäsin jälleen kerran mulle ylitse pääsemättömään ongelmaan: tiedon tallentaminen Access-kantaan ei onnistu. Tässä vaiheessa haluan vielä huomauttaa, että käytössä on Microsoft Visual Basic 2005 Express Edition -ohjelmisto.

Tieto tallentuu kannan tietoja muistissa pitävään DataSet-luokan olioon niin kuin pitääkin, mutta muistista varsinaiseen tietokantaan tallentaminen ei onnistu. Hommaa olen kokeillut toteuttaa ensinnäkin valmiilla Datagrid-"kontrollilla". Tieto ei tallennu kantaan asti, vaikka kontrollin luoman työkalupalkin Save-nappia painelisi maailman loppuun asti. Lisätty tieto pysyy taulukossa niin kauan kuin ohjelma on päällä. Tietoa pystyy kuitenkin lisäämään pysyvästi, jos sitä lisää käsin Database Explorerin kautta valitsemalla käytettävän taulun kohdalta "Show table data". Tuon perusteella voi kai siis olettaa, että tietokanta ei ole mitenkään kirjoitussuojattu ulkopuolisilta ohjelmilta tms.?

Toisaalta olen kokeillut lisätä tietoa myös rehellisesti koodaamalla. Siinä ilmenee tietenkin sama ongelma, mutta haluaisinkin kysyä, että mitä mieltä olette käyttämästäni tavasta tehdä ko. operaatio, vai olisiko tiedon lisäämiseen koodipuolelta jokin parempikin keino? (Funktio on sovellettu noista ensimmäisessä viestissäni mainitsemistani video-oppaista.)

Private Sub AddType()
        ' Luokaan kyselylomakeolio. Lomakkeessa käyttäjä
        ' määrittää tietokantaan lisättävän tyypin nimen.
        ' Tämän jälkeen olisi tarkoitus lisätä tietoa Rautatyypit
        ' -nimiseen tauluun. Taulussa on kaksi saraketta:
        ' TyyppiId ja Tyyppi
        Dim typeDialog As New TypeDialog()
        Dim result As DialogResult
        result = typeDialog.ShowDialog
        If result = Windows.Forms.DialogResult.OK Then
            Try
                Dim type As RautaDb_A2002DataSet.RautatyypitRow
                type = myDataSet.Rautatyypit.NewRautatyypitRow
                type.Tyyppi = typeDialog.Type
                myDataSet.Rautatyypit.AddRautatyypitRow(type)
                Dim rowsAffected As Integer = 0
                rowsAffected = RautatyypitTableAdapter.Update(type)
                MessageBox.Show("Muokattuja rivejä: " & rowsAffected.ToString)

            Catch ex As Exception

            End Try
        End If
    End Sub

Sivun alkuun

Vastaus

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

Tietoa sivustosta