Seuraavanlaista ongelmaa:
Näytä ilmoittautuneet -napin takana seuraava koodi, jonka tarkoitus hakea kaikki tietylle jumppatunnille ilmoittautuneet.
Private Sub BtnIlmot_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnIlmot.Click 'Haetaan kellonajan perusteella kyseiseen tuntitoteutukseen ilmoittautuneet LstIlmoittautuneet.Items.Clear() Dim ID As Integer ID = Trim(Mid(LstAjat.Text, 1, 4)) 'Leikataan LstAjat alusta 4 merkkiä SqlStr = "SELECT asiakas_id, sukunimi, etunimi FROM Asiakkaat WHERE asiakas_id=(SELECT asiakas_id FROM Ilmoittautumiset WHERE tuntitoteutus_id=" & ID & ")" objRs.Open(SqlStr, objConn, 1, 3) Do While Not objRs.EOF LstIlmoittautuneet.Items.Add(objRs("asiakas_id").Value & " " & objRs("sukunimi").Value & ", " & objRs("etunimi").Value) objRs.MoveNext() Loop objRs.Close() End Sub
- Toimii vain jos tunnille on yksi ilmoittautunut. Jos on useampia, tulee seur. virheilmoitus: [Microsoft][ODBC Microsoft Access -ohjain] Tämä alikysely voi palauttaa enintään yhden tietueen.
Ja miksei seuraava alikysely toimi:
Dim ID As Integer ID = Trim(Mid(LstAjat.Text, 1, 4)) 'Leikataan LstAjat alusta 4 merkkiä, jäljelle jää tuntitoteutus_id ja pari tyhjää merkkiä SqlStr = "SELECT asiakas_id, sukunimi, etunimi FROM Asiakkaat WHERE asiakas_id IN (SELECT asiakas_id FROM Ilmoittautumiset WHERE tuntitoteutus_id)=" & ID
tuohon tulee virheilmoitus että IN:in yhteydessä käytettävä sulkuja, vaikka siinä on sulut. Onko joku yksittäinen merkki väärin.
Koodaan ilmaisversiolla express edition 2008.
mavijo kirjoitti:
SqlStr = "SELECT asiakas_id, sukunimi, etunimi FROM Asiakkaat WHERE asiakas_id IN (SELECT asiakas_id FROM Ilmoittautumiset WHERE tuntitoteutus_id)=" & ID
SqlStr = "SELECT asiakas_id, sukunimi, etunimi FROM Asiakkaat WHERE asiakas_id IN (SELECT asiakas_id FROM Ilmoittautumiset WHERE tuntitoteutus_id=" & ID & ")"
Heippa mavijo!
kokeile DataSettiä...
Sub LstAjatSelectedIndexChanged( _ sender As Object, e As EventArgs) Dim connStr As String = _ "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + _ Environ("userprofile") + "\Työpöytä\Testi.mdb" Dim conn As OleDbConnection = New OleDbConnection(connStr) Dim ID As Integer = CInt(LstAjat.Text.Substring(0, 4).Trim) Dim SqlStr As String = _ "SELECT asiakas_id, sukunimi, etunimi FROM " + _ "Asiakkaat WHERE asiakas_id IN (SELECT asiakas_id " + _ FROM Ilmoittautumiset WHERE tuntitoteutus_id =" & ID & ")" conn.Open() Dim da As OleDbDataAdapter = New OleDbDataAdapter(SqlStr,conn) Dim ds As DataSet = New DataSet, row As DataRow da.Fill(ds,"Asiakkaat") For Each row In ds.Tables(0).Rows LstIlmoittautuneet.Items.Add(row("asiakas_id") & _ " " & row("sukunimi") & " " & row("etunimi")) Next conn.Close(): ds = Nothing da = Nothing: conn = Nothing End Sub
Kiitokset neuvoistanne! Kokeilen kun pääsen töistä kotiin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.