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 SubKiitokset neuvoistanne! Kokeilen kun pääsen töistä kotiin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.