Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB ja SQL-syntaksi -ngelmia (VB6)

mavijo [12.05.2008 05:58:39]

#

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.

Blaze [12.05.2008 09:13:13]

#

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 & ")"

neau33 [12.05.2008 09:59:52]

#

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

mavijo [12.05.2008 14:51:39]

#

Kiitokset neuvoistanne! Kokeilen kun pääsen töistä kotiin.

Vastaus

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

Tietoa sivustosta