datakombo ei osaa valita

ois jees jos joku osais vastata miksi datakombo ei osaa valita jos listassa on kaksi täsmälleen samaa nimeä? Lista täytetään SQL kyselyllä access tietokannasta nimillä ja boundcolumn:iksi tulee tunnus. kun listasta valitaan click-proseduurilla nimi ja pitäisi hakea tietokannasta nimeen kuuluvat tiedot, (SQL lauseessa hakuehtona on se boundtextinä oleva tunnus), niin vb ei osaa valita kumpi samannimisistä valitaan, vaan hakee molemmilla niin kauan että ohjelma kaatuu. jos jollakin on ajatuksia tai kysymistä, voin antaa lisäinfoa. Tunteja on tapellessa mennyt.
7374
Äänestä

Muut lukivat myös

Vastaukset 7

Vanhimmat

Jos combossa on kaksi samaa nimeä niin kysely palauttaa kaksi tietuetta

select * from henkilot where Sukunimi='Meikäläinen'
palauttaa 3 tietuetta

select * from henkilot where Etunimi='Mikko'
palauttaa 2 tietuetta

select * from henkilot where Sukunimi='Meikäläinen' and Etunimi='Matti'
palauttaa 2 tietuetta

Etunimi|Sukunimi |Ikä
=======|===========|===
Matti |Meikäläinen|36
Mikko |Teikäläinen|26
Maija |Meikäläinen|35
Mikko |Meikäläinen| 5

Lisää rajoittavia hakutekijöitä

Sulla on kyllä jokin muukin virhe sillä SQL-lause joko palauttaa tietueita, ei palauta tietueita, keskeytyy timeouttiin mutta ei saa kaataa ohjelmaa.

Debuggaa miltä se SQL-lause näyttää jolla kysely ajetaan.

Äänestä
  • tässä pätkä koodista. SQL lause on kait asiallinen. Itseasiassa ohjelma ei aina kaadu joskus se selviää kun vain odottaa. kaatumisen syy on pinon täyttyminen.

    'DataCombosta luetaan BoundText -arvo
    If IsNumeric(cbonimi.BoundText) Then
    intTunnus = cbonimi.BoundText
    Else
    intTunnus = 0
    End If

    Set rstiedot = New Recordset

    'Sql-kysely tietietojen hakemiseksi
    strsql = "SELECT * " & _
    " FROM tiedot " & _
    " WHERE tunnus =" & intTunnus

    'Suoritetaan em. sql-kysely
    rstiedot.Open strsql, DataEnvironment.cnntietokanta, adOpenStatic, adLockReadOnly

    Minua kummastuttaa miksi se ei osaa valita kun haku tapahtuu nimeen kuuluvalla tunnuksella. tunnuksia ei ole kahta samaa. msgbox tulostuksella olen SQL lausetta tutkinut, se on jees ja toimii muissa yhteyksissä ihan oikein, kuten myös ohjelman toimintaa ja se näyttää hakevan silmukassa. ps. onko sulla ylimääräisiä käämejä, mulla on omat kärähtäny!

    Äänestä

  • peki kirjoitti:

    tässä pätkä koodista. SQL lause on kait asiallinen. Itseasiassa ohjelma ei aina kaadu joskus se selviää kun vain odottaa. kaatumisen syy on pinon täyttyminen.

    'DataCombosta luetaan BoundText -arvo
    If IsNumeric(cbonimi.BoundText) Then
    intTunnus = cbonimi.BoundText
    Else
    intTunnus = 0
    End If

    Set rstiedot = New Recordset

    'Sql-kysely tietietojen hakemiseksi
    strsql = "SELECT * " & _
    " FROM tiedot " & _
    " WHERE tunnus =" & intTunnus

    'Suoritetaan em. sql-kysely
    rstiedot.Open strsql, DataEnvironment.cnntietokanta, adOpenStatic, adLockReadOnly

    Minua kummastuttaa miksi se ei osaa valita kun haku tapahtuu nimeen kuuluvalla tunnuksella. tunnuksia ei ole kahta samaa. msgbox tulostuksella olen SQL lausetta tutkinut, se on jees ja toimii muissa yhteyksissä ihan oikein, kuten myös ohjelman toimintaa ja se näyttää hakevan silmukassa. ps. onko sulla ylimääräisiä käämejä, mulla on omat kärähtäny!

    ois jees jos joku osais vastata miksi datakombo ei osaa valita jos listassa on kaksi täsmälleen samaa nimeä?

    Lista täytetään SQL kyselyllä access tietokannasta nimillä ja boundcolumn:iksi tulee tunnus.
    =================================================

    Olis pitäny lukee tuo eka viesti kunnolla.

    Datacompo pitää täyttää
    SELECT DISTINCT NIMI FROM TAULU WHERE ...
    näin tuplat tippuu pois siitä combosta sillä eihän ole tarkoitus että siinä näkyy tuplia?

    Äänestä

  • Bill Gates kirjoitti:

    ois jees jos joku osais vastata miksi datakombo ei osaa valita jos listassa on kaksi täsmälleen samaa nimeä?

    Lista täytetään SQL kyselyllä access tietokannasta nimillä ja boundcolumn:iksi tulee tunnus.
    =================================================

    Olis pitäny lukee tuo eka viesti kunnolla.

    Datacompo pitää täyttää
    SELECT DISTINCT NIMI FROM TAULU WHERE ...
    näin tuplat tippuu pois siitä combosta sillä eihän ole tarkoitus että siinä näkyy tuplia?

    uutta viikkoa vaan kaikille. palatakseni asiaan. datakompoon tarvitaan kyllä samoja nimiä sillä voihan kahdella eri henkilöllä olla sama nimi mutta eri tunnus.
    laitanpa koodin kompon täyttämiseks

    strSql2 = "SELECT tunnus, nimi " & _
    " FROM tiedot " & _
    " ORDER BY nimi"
    Set rstunnus2 = New Recordset
    rstunnus2.Open strSql2, DataEnvironment.cnntietokanta, adOpenStatic, adLockReadOnly

    With cboY
    Set .RowSource = rstunnus2
    .BoundColumn = "tunnus"
    .ListField = "nimi"
    End With
    Yllä oleva on modulissa. eikös tämä ole niinkuin pitää? On mielessä likkunut sellainen ajatus että onko click-metodi liian "herkkä", että se suorittaisi subin jotenkin uudelleen ennen vnhan valmistumista.

    Äänestä

  • peki kirjoitti:

    uutta viikkoa vaan kaikille. palatakseni asiaan. datakompoon tarvitaan kyllä samoja nimiä sillä voihan kahdella eri henkilöllä olla sama nimi mutta eri tunnus.
    laitanpa koodin kompon täyttämiseks

    strSql2 = "SELECT tunnus, nimi " & _
    " FROM tiedot " & _
    " ORDER BY nimi"
    Set rstunnus2 = New Recordset
    rstunnus2.Open strSql2, DataEnvironment.cnntietokanta, adOpenStatic, adLockReadOnly

    With cboY
    Set .RowSource = rstunnus2
    .BoundColumn = "tunnus"
    .ListField = "nimi"
    End With
    Yllä oleva on modulissa. eikös tämä ole niinkuin pitää? On mielessä likkunut sellainen ajatus että onko click-metodi liian "herkkä", että se suorittaisi subin jotenkin uudelleen ennen vnhan valmistumista.

    Itse en ole DataComboa käyttänyt mutta löytämieni esimerkkien perusteella näyttäisi siltä että olet ymmärtänyt sen käyttötarkoituksen väärin (tai sitten minä).

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/DBList98/html/vbctldatacombocontrol_x.asp


    Itse tekisin homman näin

    Valitaan ensin menusta
    Project
    References
       ruksi Microsoft ActiveX Data Objects 2.5 Library
       

    Tietokanta=ODBC nimellä koe
    Työntekijät taulussa Id,Sukunimi,Etunimi,Ika

    'Ladataan Combo
    Private Sub Form_Load()
    Dim Rs As ADODB.Recordset
    Set Rs = New ADODB.Recordset

    Dim Conn As String
    Dim Query As String

    Conn = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=Koe"
    Query = "select id,sukunimi from tyontekijat"

    Rs.Open Query, Conn
    Rs.MoveFirst

    While Not Rs.EOF
    Combo1.AddItem Rs!sukunimi
    Combo1.ItemData(Combo1.NewIndex) = Rs!id
    Rs.MoveNext
    Wend

    Rs.Close
    End Sub

    'Muodostetaan toinen select
    Private Sub Combo1_Click()
    Query2="select * from xxx where id=" & Combo1.ItemData(Combo1.ListIndex)
    End Sub

    Äänestä

  • Bill Gates kirjoitti:

    Itse en ole DataComboa käyttänyt mutta löytämieni esimerkkien perusteella näyttäisi siltä että olet ymmärtänyt sen käyttötarkoituksen väärin (tai sitten minä).

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/DBList98/html/vbctldatacombocontrol_x.asp


    Itse tekisin homman näin

    Valitaan ensin menusta
    Project
    References
       ruksi Microsoft ActiveX Data Objects 2.5 Library
       

    Tietokanta=ODBC nimellä koe
    Työntekijät taulussa Id,Sukunimi,Etunimi,Ika

    'Ladataan Combo
    Private Sub Form_Load()
    Dim Rs As ADODB.Recordset
    Set Rs = New ADODB.Recordset

    Dim Conn As String
    Dim Query As String

    Conn = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=Koe"
    Query = "select id,sukunimi from tyontekijat"

    Rs.Open Query, Conn
    Rs.MoveFirst

    While Not Rs.EOF
    Combo1.AddItem Rs!sukunimi
    Combo1.ItemData(Combo1.NewIndex) = Rs!id
    Rs.MoveNext
    Wend

    Rs.Close
    End Sub

    'Muodostetaan toinen select
    Private Sub Combo1_Click()
    Query2="select * from xxx where id=" & Combo1.ItemData(Combo1.ListIndex)
    End Sub

    Esimerkissä käytin tavallista comboa

    Äänestä

  • Bill Gates kirjoitti:

    Esimerkissä käytin tavallista comboa

    suuret kiitokset vinkeistäsi. tein ohjeidesi mukaan ja homma toimii loistavasti. on se mukava kun vanne poistuu puristamasta päätä.

    Äänestä

Kommentoi aloitusta


peki kirjoitti:

ois jees jos joku osais vastata miksi datakombo ei osaa valita jos listassa on kaksi täsmälleen samaa nimeä? Lista täytetään SQL kyselyllä access tietokannasta nimillä ja boundcolumn:iksi tulee tunnus. kun listasta valitaan click-proseduurilla nimi ja pitäisi hakea tietokannasta nimeen kuuluvat tiedot, (SQL lauseessa hakuehtona on se boundtextinä oleva tunnus), niin vb ei osaa valita kumpi samannimisistä valitaan, vaan hakee molemmilla niin kauan että ohjelma kaatuu. jos jollakin on ajatuksia tai kysymistä, voin antaa lisäinfoa. Tunteja on tapellessa mennyt.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu