Ohjelmointiin

Apua

Pulma. Kyseinen ongelma kohta ohjelmassani hakee tietoa tietokannasta ok. Minulla on kannassa kaksitaulua toinen toimii mutta toisesta taulusta kun haen tieto tämä rivi herjaa:
objRs.Open(SqlStr, objConn, 1, 3)
Mitä nuo numerot käytännössä merkitsevät?
Herjaus lause on seuraava:
Additional information: [Microsoft][ODBC Microsoft Access -ohjain] Liian vähän parametreja. Tarvitaan 1.

20

1588

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Time is on My Side

      objRs on Recordset. Sivulla http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdmthrstopen.asp kerrotaan Recordsetin Open-metodin toiminnasta. Samalla sivulla on kerrottu parametrien nimet. Metodin rakenne on tämä:

      recordset.Open Source, ActiveConnection, CursorType, LockType, Options

      Eli:
      SqlStr on Source,
      objConn on ActiveConnection,
      1 viittaa tiettyyn CursorType:een,
      3 viittaa tiettyyn LockType:een

      Sivulta http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdcstcursortypeenum.asp saamme selville, että ykköstyypin CursorType tarkoittaa adOpenKeyset:ia.

      http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdcstlocktypeenum.asp taas kertoo, että kolmostyypin locktype on "adLockOptimistic".

      Tässäpä tärkeimmät.. :)

      TioMS

      • Apua

        Kiitos nuo sivut ovatkin oivankätevät. Muttamielestäni kaikki pitäsi olla oikein. Mikä tuossa voisi olla sitten väärin kun ei toimi.
        Tuo toimii toisessa taulussa muttei tässätaulussa?

        objRs.Open(SqlStr, objConn, 1, 3) '???
        If Not objRs.EOF Then
        -....
        -....


      • TioMS
        Apua kirjoitti:

        Kiitos nuo sivut ovatkin oivankätevät. Muttamielestäni kaikki pitäsi olla oikein. Mikä tuossa voisi olla sitten väärin kun ei toimi.
        Tuo toimii toisessa taulussa muttei tässätaulussa?

        objRs.Open(SqlStr, objConn, 1, 3) '???
        If Not objRs.EOF Then
        -....
        -....

        .. hauissasi on tehty eri tavalla :)

        Jos et muuten pääse eteenpäin, niin laita tänne molemmat metodit täydellisenä.


      • Apua
        TioMS kirjoitti:

        .. hauissasi on tehty eri tavalla :)

        Jos et muuten pääse eteenpäin, niin laita tänne molemmat metodit täydellisenä.

        objConn = New ADODB.Connection()
        objRs = New ADODB.Recordset()
        objConn.Open("Driver={Microsoft Access Driver (*.mdb)};Dbq=trimmit.mdb")
        Dim SqlStr = "SELECT * FROM 49er WHERE Tuuli='" & TuuliLuokka & "' AND Aallokko='" & AallokkoLuokka & "' AND Paino='" & PainoLuokka & "'"
        MsgBox(SqlStr)
        objRs.Open(SqlStr, objConn, 1, 3) 'TÄHÄN KOHTAAN SIIS TYSSÄÄ!!!!
        If Not objRs.EOF Then
        ListBox1.Items.Add("Bend:" & objRs("Bend").Value)
        ListBox1.Items.Add("Toppi vantin jännitys:" & objRs("Top").Value)
        ListBox1.Items.Add("Päävantin jännitys:" & objRs("Paa").Value)
        ListBox1.Items.Add("Kelavantin jännitys:" & objRs("Keula").Value)

        End If
        objRs.Close()
        objConn.Close()


      • sulut?
        Apua kirjoitti:

        objConn = New ADODB.Connection()
        objRs = New ADODB.Recordset()
        objConn.Open("Driver={Microsoft Access Driver (*.mdb)};Dbq=trimmit.mdb")
        Dim SqlStr = "SELECT * FROM 49er WHERE Tuuli='" & TuuliLuokka & "' AND Aallokko='" & AallokkoLuokka & "' AND Paino='" & PainoLuokka & "'"
        MsgBox(SqlStr)
        objRs.Open(SqlStr, objConn, 1, 3) 'TÄHÄN KOHTAAN SIIS TYSSÄÄ!!!!
        If Not objRs.EOF Then
        ListBox1.Items.Add("Bend:" & objRs("Bend").Value)
        ListBox1.Items.Add("Toppi vantin jännitys:" & objRs("Top").Value)
        ListBox1.Items.Add("Päävantin jännitys:" & objRs("Paa").Value)
        ListBox1.Items.Add("Kelavantin jännitys:" & objRs("Keula").Value)

        End If
        objRs.Close()
        objConn.Close()

        >objRs.Open(SqlStr, objConn, 1, 3) 'TÄHÄN KOHTAAN SIIS TYSSÄÄ!!!!

        Eikö sen pitäisi olla:
        objRs.Open SqlStr, objConnn

        Nuo loput parametrit viittaa kursoreihin ja lukituksiin joista access ei taida ymmärtää "höykäsenpöläystä"


      • Apua
        sulut? kirjoitti:

        >objRs.Open(SqlStr, objConn, 1, 3) 'TÄHÄN KOHTAAN SIIS TYSSÄÄ!!!!

        Eikö sen pitäisi olla:
        objRs.Open SqlStr, objConnn

        Nuo loput parametrit viittaa kursoreihin ja lukituksiin joista access ei taida ymmärtää "höykäsenpöläystä"

        Visual Basic.NET korjaa itse nuo sulut siihen ja herjaa kirjoitusvirheistä.
        Idea menee niin kun kursori hakee tietokannan sarakkeista käyttäjän valitut arvot ja kun löytää se tulostaa tietokannasta tulokset.


      • tuota
        Apua kirjoitti:

        Visual Basic.NET korjaa itse nuo sulut siihen ja herjaa kirjoitusvirheistä.
        Idea menee niin kun kursori hakee tietokannan sarakkeista käyttäjän valitut arvot ja kun löytää se tulostaa tietokannasta tulokset.

        >Idea menee niin kun kursori hakee tietokannan sarakkeista...

        Onkohan nyt homma oikein hanskassa? Ei kai kursorilla ole yksinkertaisessa select lausessa mitään tekemistä.

        Mitä muuten tulostaa se MessageBox eli onko sen SQL-lauseen syntaksi oikein?


      • Apua
        tuota kirjoitti:

        >Idea menee niin kun kursori hakee tietokannan sarakkeista...

        Onkohan nyt homma oikein hanskassa? Ei kai kursorilla ole yksinkertaisessa select lausessa mitään tekemistä.

        Mitä muuten tulostaa se MessageBox eli onko sen SQL-lauseen syntaksi oikein?

        Tuolla messageBoxsilla voin tarkistaa löytääkö se valitut solut.

        Tämä esimerkiksi toimii täydellisesti:
        objConn = New ADODB.Connection()
        objRs = New ADODB.Recordset()
        objConn.Open("Driver={Microsoft Access Driver (*.mdb)};Dbq=trimmit.mdb")
        Dim SqlStr = "SELECT * FROM 470 WHERE Tuuli='" & TuuliLuokka & "' AND Aallokko='" & AallokkoLuokka & "' AND Paino='" & PainoLuokka & "' AND Mittari='" & MittariLuokka & "' AND Masto='" & MastoLuokka & "'"
        MsgBox(SqlStr)
        objRs.Open(SqlStr, objConn, 1, 3)
        If Not objRs.EOF Then
        ListBox1.Items.Add("Rake:" & objRs("Rake").Value & "mm")
        ListBox1.Items.Add("Bend:" & objRs("Bend").Value & "mm")
        ListBox1.Items.Add("Keulavaijerin jännitys:" & objRs("Keula").Value)
        ListBox1.Items.Add("Spriidarinkulma:" & objRs("Spriidarinkulma").Value & "mm")
        ListBox1.Items.Add("Spriidarinpituus:" & objRs("Spriidarinpituus").Value & "mm")
        End If
        objRs.Close()
        objConn.Close()


      • tuota
        Apua kirjoitti:

        Tuolla messageBoxsilla voin tarkistaa löytääkö se valitut solut.

        Tämä esimerkiksi toimii täydellisesti:
        objConn = New ADODB.Connection()
        objRs = New ADODB.Recordset()
        objConn.Open("Driver={Microsoft Access Driver (*.mdb)};Dbq=trimmit.mdb")
        Dim SqlStr = "SELECT * FROM 470 WHERE Tuuli='" & TuuliLuokka & "' AND Aallokko='" & AallokkoLuokka & "' AND Paino='" & PainoLuokka & "' AND Mittari='" & MittariLuokka & "' AND Masto='" & MastoLuokka & "'"
        MsgBox(SqlStr)
        objRs.Open(SqlStr, objConn, 1, 3)
        If Not objRs.EOF Then
        ListBox1.Items.Add("Rake:" & objRs("Rake").Value & "mm")
        ListBox1.Items.Add("Bend:" & objRs("Bend").Value & "mm")
        ListBox1.Items.Add("Keulavaijerin jännitys:" & objRs("Keula").Value)
        ListBox1.Items.Add("Spriidarinkulma:" & objRs("Spriidarinkulma").Value & "mm")
        ListBox1.Items.Add("Spriidarinpituus:" & objRs("Spriidarinpituus").Value & "mm")
        End If
        objRs.Close()
        objConn.Close()

        >...voin tarkistaa löytääkö se valitut solut.

        MessageBox ei tarkista mitään vaan esittää miltä SQL-lause näyttää ja virhe on ilmeisimmin siinä.

        Tarkista siis sen syntaksi tai laita molemmista tänne kopio mitä siinä messageboxissa näkyy.


      • Apua
        tuota kirjoitti:

        >...voin tarkistaa löytääkö se valitut solut.

        MessageBox ei tarkista mitään vaan esittää miltä SQL-lause näyttää ja virhe on ilmeisimmin siinä.

        Tarkista siis sen syntaksi tai laita molemmista tänne kopio mitä siinä messageboxissa näkyy.

        MessageBox antaa tekstin kun ensimmäisessä Formissa on valittu luokaksi 49er:
        SELECT* FROM 49er WHERE Tuuli='3' AND Aallokko='ei' AND Paino='120'

        Nuo ovat siis niitä käyttäjän valintoja. Nuo samat avot löytyvät tietokannasta. Joiden mukaan löytyvät tulokset noille olosuhteille tietokannan.
        Tulokset ovat:
        ListBox1.Items.Add("Bend:" & objRs("Bend").Value)
        ListBox1.Items.Add("Toppi vantin jännitys:" & objRs("Top").Value)
        ListBox1.Items.Add("Päävantin jännitys:" & objRs("Paa").Value)
        ListBox1.Items.Add("Kelavantin jännitys:" & objRs("Keula").Value)


      • tuota
        Apua kirjoitti:

        MessageBox antaa tekstin kun ensimmäisessä Formissa on valittu luokaksi 49er:
        SELECT* FROM 49er WHERE Tuuli='3' AND Aallokko='ei' AND Paino='120'

        Nuo ovat siis niitä käyttäjän valintoja. Nuo samat avot löytyvät tietokannasta. Joiden mukaan löytyvät tulokset noille olosuhteille tietokannan.
        Tulokset ovat:
        ListBox1.Items.Add("Bend:" & objRs("Bend").Value)
        ListBox1.Items.Add("Toppi vantin jännitys:" & objRs("Top").Value)
        ListBox1.Items.Add("Päävantin jännitys:" & objRs("Paa").Value)
        ListBox1.Items.Add("Kelavantin jännitys:" & objRs("Keula").Value)

        Otitko tuon kopiona MessageBoxista vai onko ihan typo että tuosta SELECT:in perästä puutuu välilyönti?


      • Apua
        tuota kirjoitti:

        Otitko tuon kopiona MessageBoxista vai onko ihan typo että tuosta SELECT:in perästä puutuu välilyönti?

        Kirjoitin sen tänne käsin ei pystynyt Copy / Paste :lla joten se on kyllä kirjoitus virhe. Koodissa oikein.

        Huomasin ainakin että kannassa sarake osake oli kirjoitettu väärin Aallokko oli Aalokko.
        Mutta korjasin sen niin se virhe ilmoitus muuttui hieman: Oliko se nyt että ilmoittaa että parametrissa tyyppi virhe.


      • tuota
        Apua kirjoitti:

        Kirjoitin sen tänne käsin ei pystynyt Copy / Paste :lla joten se on kyllä kirjoitus virhe. Koodissa oikein.

        Huomasin ainakin että kannassa sarake osake oli kirjoitettu väärin Aallokko oli Aalokko.
        Mutta korjasin sen niin se virhe ilmoitus muuttui hieman: Oliko se nyt että ilmoittaa että parametrissa tyyppi virhe.

        >...että parametrissa tyyppi virhe.
        Kun ehdossa on että: "Tuuli='3' AND Aallokko='ei' AND Paino='120'"

        Onko kaikki sarakkeet char tai varchar tyyppiä että niitä voi kysellä merkkitiedolla eikä Tuuli tai Paino ole esim tyyppiä int.


      • Apua
        tuota kirjoitti:

        >...että parametrissa tyyppi virhe.
        Kun ehdossa on että: "Tuuli='3' AND Aallokko='ei' AND Paino='120'"

        Onko kaikki sarakkeet char tai varchar tyyppiä että niitä voi kysellä merkkitiedolla eikä Tuuli tai Paino ole esim tyyppiä int.

        Kyllä kaikki sarakkeet ovat luku muodossa.
        Se nykyinen virheteksti meen siis näin.
        Additional information: [Microsoft][ODBC Microsoft Access -ohjain] Tyyppivirhe ehtomäärityksessä.


      • tuota
        Apua kirjoitti:

        Kyllä kaikki sarakkeet ovat luku muodossa.
        Se nykyinen virheteksti meen siis näin.
        Additional information: [Microsoft][ODBC Microsoft Access -ohjain] Tyyppivirhe ehtomäärityksessä.

        >...ovat luku muodossa.

        Mutta mikä on datatyyppi?

        >Tyyppivirhe ehtomäärityksessä.

        Tuo tarkoittaa juuri sitä mitä kysyin edellisessä kommentissani. Ehto on asetettu merkkitietona (char tai varchar) ja kannassa sen tyyppi on jotakin muuta, luultavasti kokonaisluku (int).


      • Kiitos avusta
        tuota kirjoitti:

        >...ovat luku muodossa.

        Mutta mikä on datatyyppi?

        >Tyyppivirhe ehtomäärityksessä.

        Tuo tarkoittaa juuri sitä mitä kysyin edellisessä kommentissani. Ehto on asetettu merkkitietona (char tai varchar) ja kannassa sen tyyppi on jotakin muuta, luultavasti kokonaisluku (int).

        Todella näin pienestä asiasta se oli kiinni!!! Kaikki piti olla teksti -muodossa.
        Suur kiitokset vaivan näöstäsi opastaa tälläistä hönää.
        Olet GURU!!


      • tuota
        Kiitos avusta kirjoitti:

        Todella näin pienestä asiasta se oli kiinni!!! Kaikki piti olla teksti -muodossa.
        Suur kiitokset vaivan näöstäsi opastaa tälläistä hönää.
        Olet GURU!!

        ...kiitoksista.

        >näin pienestä asiasta se oli kiinni

        Näin se monesti meneen. Työvoitto.
        Pääasia että toimii.

        Erityisesti pitää arvostaa sitä että ilmoitit kun sait homman pelaamaan. Valitettavan usein kysyjä katoaa saatuaan ratkaisun ja ongelma jää ikäänkuin ilmaan kun ei tiedä auttoiko neuvot vai ei.


      • Jos sallinet
        tuota kirjoitti:

        ...kiitoksista.

        >näin pienestä asiasta se oli kiinni

        Näin se monesti meneen. Työvoitto.
        Pääasia että toimii.

        Erityisesti pitää arvostaa sitä että ilmoitit kun sait homman pelaamaan. Valitettavan usein kysyjä katoaa saatuaan ratkaisun ja ongelma jää ikäänkuin ilmaan kun ei tiedä auttoiko neuvot vai ei.

        Voiko käyttää if rakennetta ja miten kun haluan käytännössä tämän seuraavasti:

        Jos Form1:ssä on valinttu Luokka 49er niin tapahtuu tämä --->

        objConn = New ADODB.Connection()
        objRs = New ADODB.Recordset()
        objConn.Open("Driver={Microsoft Access Driver (*.mdb)};Dbq=trimmit.mdb")
        Dim SqlStr = "SELECT * FROM 49er WHERE Tuuli='" & TuuliLuokka & "' AND Aallokko='" & AallokkoLuokka & "' AND Paino='" & PainoLuokka & "'"
        MsgBox(SqlStr)
        objRs.Open(SqlStr, objConn, 1, 3)
        If Not objRs.EOF Then
        ListBox1.Items.Add("Bend:" & objRs("Bend").Value)
        ListBox1.Items.Add("Toppi vantin jännitys:" & objRs("Top").Value)
        ListBox1.Items.Add("Päävantin jännitys:" & objRs("Paa").Value)
        ListBox1.Items.Add("Kelavantin jännitys:" & objRs("Keula").Value)

        End If
        objRs.Close()
        objConn.Close()


        Jos Form1:ssä on valinttu Luokka 470 niin tapahtuu tämä --->

        objConn = New ADODB.Connection()
        objRs = New ADODB.Recordset()
        objConn.Open("Driver={Microsoft Access Driver (*.mdb)};Dbq=trimmit.mdb")
        Dim SqlStr = "SELECT * FROM 470 WHERE Tuuli='" & TuuliLuokka & "' AND Aallokko='" & AallokkoLuokka & "' AND Paino='" & PainoLuokka & "' AND Mittari='" & MittariLuokka & "' AND Masto='" & MastoLuokka & "'"
        MsgBox(SqlStr)
        objRs.Open(SqlStr, objConn, 1, 3)
        If Not objRs.EOF Then
        ListBox1.Items.Add("Rake:" & objRs("Rake").Value & "mm")
        ListBox1.Items.Add("Bend:" & objRs("Bend").Value & "mm")
        ListBox1.Items.Add("Keulavaijerin jännitys:" & objRs("Keula").Value)
        ListBox1.Items.Add("Spriidarinkulma:" & objRs("Spriidarinkulma").Value & "mm")
        ListBox1.Items.Add("Spriidarinpituus:" & objRs("Spriidarinpituus").Value & "mm")
        End If
        objRs.Close()
        objConn.Close()


    • tuota

      Meni ketju niin pitkäksi että jatkuu täällä.

      Tuossa koodissahan on paljon samaa ja myös taulu voi muuttuja joten itse tekisin näin

      objConn = New ADODB.Connection()
      objRs = New ADODB.Recordset()
      objConn.Open("Driver={Microsoft Access Driver (*.mdb)};Dbq=trimmit.mdb")
      Dim SqlStr = "SELECT * FROM " & Taulu & " WHERE Tuuli='" & TuuliLuokka & "' AND Aallokko='" & AallokkoLuokka & "' AND Paino='" & PainoLuokka & "'"
      'lisätään 470:n kentät
      if Taulu="470"
      SqlStr = SqlStr & "' AND Mittari='" & MittariLuokka & "' AND Masto='" & MastoLuokka & "'"
      end if
      MsgBox(SqlStr)
      objRs.Open(SqlStr, objConn, 1, 3)
      If Not objRs.EOF Then
      If Taulu="49er"
      ListBox1.Items.Add("Bend:" & objRs("Bend").Value)
      ListBox1.Items.Add("Toppi vantin jännitys:" & objRs("Top").Value)
      ListBox1.Items.Add("Päävantin jännitys:" & objRs("Paa").Value)
      ListBox1.Items.Add("Kelavantin jännitys:" & objRs("Keula").Value)
      Else
      ListBox1.Items.Add("Rake:" & objRs("Rake").Value & "mm")
      ListBox1.Items.Add("Bend:" & objRs("Bend").Value & "mm")
      ListBox1.Items.Add("Keulavaijerin jännitys:" & objRs("Keula").Value)
      ListBox1.Items.Add("Spriidarinkulma:" & objRs("Spriidarinkulma").Value & "mm")
      ListBox1.Items.Add("Spriidarinpituus:" & objRs("Spriidarinpituus").Value & "mm")
      End If
      End If
      objRs.Close()
      objConn.Close()

      Syntaxista en mene takuuseen kun basicin käytöstä on vähän jo aikaa mutta noin periaattees jotenkin noin. Jos tauluja (luokkia?) on enemmän kuin kaksi niin kannattaa varmaan käyttää select-case rakennetta.

      • .NET

        objConn = New ADODB.Connection()
        objRs = New ADODB.Recordset()
        objConn.Open("Driver={Microsoft Access Driver (*.mdb)};Dbq=trimmit.mdb")
        If Luokka = "470" Then
        Dim SqlStr = "SELECT * FROM 470 WHERE Tuuli='" & TuuliLuokka & "' AND Aallokko='" & AallokkoLuokka & "' AND Paino='" & PainoLuokka & "' AND Mittari='" & MittariLuokka & "' AND Masto='" & MastoLuokka & "'"
        'MsgBox(SqlStr)
        objRs.Open(SqlStr, objConn, 1, 3)
        If Not objRs.EOF Then
        ListBox1.Items.Add("Rake: " & objRs("Rake").Value & "mm")
        ListBox1.Items.Add("Bend: " & objRs("Bend").Value & "mm")
        ListBox1.Items.Add("Keulavaijerin jännitys: " & objRs("Keula").Value)
        ListBox1.Items.Add("Spriidarinkulma: " & objRs("Spriidarinkulma").Value & "mm")
        ListBox1.Items.Add("Spriidarinpituus: " & objRs("Spriidarinpituus").Value & "mm")
        End If

        ElseIf Luokka = "Express" Then
        Dim SqlStr = "SELECT * FROM Express WHERE Tuuli='" & TuuliLuokka & "' AND Aallokko='" & AallokkoLuokka & "'"
        'MsgBox(SqlStr)
        objRs.Open(SqlStr, objConn, 1, 3)
        If Not objRs.EOF Then
        ListBox1.Items.Add("Keulavantin kireys: " & objRs("Keula").Value)
        ListBox1.Items.Add("Toppivantin jännitys: " & objRs("Ylä").Value)
        ListBox1.Items.Add("Alavantin jännitys: " & objRs("Ala").Value)
        ListBox1.Items.Add("Hekki: " & objRs("Hekki").Value)
        ListBox1.Items.Add("Outhoul: " & objRs("Outhoul").Value)
        ListBox1.Items.Add("Puomi: " & objRs("Puomi").Value)
        End If

        Else : Luokka = "49er"
        Dim SqlStr = "SELECT * FROM 49er WHERE Tuuli='" & TuuliLuokka & "' AND Aallokko='" & AallokkoLuokka & "' AND Paino='" & PainoLuokka & "'"
        'MsgBox(SqlStr)
        objRs.Open(SqlStr, objConn, 1, 3)
        If Not objRs.EOF Then
        ListBox1.Items.Add("Bend: " & objRs("Bend").Value)
        ListBox1.Items.Add("Toppi vantin jännitys: " & objRs("Top").Value)
        ListBox1.Items.Add("Päävantin jännitys: " & objRs("Paa").Value)
        ListBox1.Items.Add("Keulavantin jännitys: " & objRs("Keula").Value)
        End If
        End If


        objRs.Close()
        objConn.Close()


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Mistä puhuitte viimeksi kun näitte

      Kerro yksi aiheista
      Ikävä
      80
      5659
    2. Olenko saanut sinut koukkuun?

      Hyvä. Rakastan sua.
      Ikävä
      127
      3943
    3. ROTAT VALTAAVAT ALUEITA

      Asukkaat nyt loukkuja tekemään ja kiireellä, jätehuolto kuntoon, jätteet niille kuuluville paikoille, huomioikaa yrittäj
      Äänekoski
      45
      3820
    4. Se on hyvästi

      Toivottavasti ei tavata.
      Ikävä
      66
      3504
    5. Miten minusta tuntuu että kaikki tietää sun tunteista mua kohtaan

      Paitsi suoraan minä itse, vai mitä hlvettiä täällä tapahtuu ja miksi ihmiset susta kyselee minulta 🤔❤️
      Ikävä
      26
      2888
    6. Alavuden sairaala

      Säästääkö Alavuden sairaala sähkössä. Kävin Sunnuntaina vast. otolla. Odotushuone ja käytävä jolla lääkäri otti vastaan
      Ähtäri
      7
      2419
    7. Sisäsiittosuus

      Tämän kevään ylioppilaista 90% oli sama sukunimi?
      Suomussalmi
      27
      2184
    8. Kerro todelliset motiivit

      kaivattuasi kohtaan?
      Ikävä
      204
      2091
    9. 33
      1879
    10. Reuters: Ukraina on iskenyt Venäjän strategisia pommikoneita vastaan. Jopa 40 konetta vahingoittunut

      Ukrainan turvallisuuspalvelu SBU on iskenyt Venäjän strategisia pommikoneita vastaan, kertoo Reuters. Uutistoimiston läh
      NATO
      430
      1752
    Aihe