Archief - [PROG][VB.NET] database (selectcommand)

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Quxan

Legacy Member
Ik zou graag hebben dat ie zn zn selectievoorwaarde haalt uit een variabele...

Code:
adap.SelectCommand.CommandText = "SELECT * FROM vliegtuiggegevens WHERE vliegtuig_ID = 1 "
werkt zonder probleem...
Code:
adap.SelectCommand.CommandText = "SELECT * FROM vliegtuiggegevens WHERE vliegtuig_ID = '" & lblvliegtuig.Text & "' "
werkt ook,
maar nu zou ik graag weten, hoe je die
1 of '" & lblvliegtuig.Text & "' kan vervangen door een variabele... (bv. door vliegtuigid).

Quxan

Legacy Member
werkt niet :-/
(is waarschijnlijk iets eenvoudigs, maar mn cursus is nogal magertjes dus 't is vooral zelfstudie)

dit is het volledige stukje code:

adap.SelectCommand.CommandText = "SELECT * FROM vliegtuiggegevens WHERE vliegtuig_ID = '" & vliegtuigid.ToString() & "' "
adap.Fill(dsvliegtuigpassagiers)

If dsvliegtuigpassagiers.Tables(0).Rows.Count = 0 Then
Return False
Else
Return True
End If
als ik je aanpassing doe, krijg ik de foutmelding:
"An unhandled exception of type 'System.Data.OleDb.OleDbException'
occured in system.data.dll" (en adap.fill(dsvliegtuigpassagiers in het groen gemarkeerd)

servi

Legacy Member
dat is niet echt de juiste manier om met parameters te werken, dit is beter ( is wel in c# , maar die code is toch quasi gelijk )

adap.SelectCommand.CommandText = "SELECT * FROM vliegtuiggegevens WHERE vliegtuig_ID = @vliegtuigid";


adap.SelectCommand.Parameters.Add("@vliegtuigid", SqlDbType.Int).Value = Convert.ToInt32(lblvliegtuig.Text) ;

adap.Fill(dsvliegtuigpassagiers);

Quxan

Legacy Member
servi zei:
dat is niet echt de juiste manier om met parameters te werken, dit is beter ( is wel in c# , maar die code is toch quasi gelijk )

adap.SelectCommand.CommandText = "SELECT * FROM vliegtuiggegevens WHERE vliegtuig_ID = @vliegtuigid";


adap.SelectCommand.Parameters.Add("@vliegtuigid", SqlDbType.Int).Value = Convert.ToInt32(lblvliegtuig.Text) ;

adap.Fill(dsvliegtuigpassagiers);
Je bet mn held van de dag :bow:
mits wat kleine aanpassingen (onder andere ook omdat ik met OLEDB-dataprovider werk) werkt het ganse boeltje nu :)

voor de geïnteresseerden, dit is mn code:
Function passagierscontrole() As Boolean
Dim adap As New OleDb.OleDbDataAdapter("", conn)
Dim dsvliegtuigpassagiers As New DataSet

'controleer of passagiers in vliegtuig passen
adap.SelectCommand.CommandText = "SELECT * FROM vliegtuiggegevens WHERE vliegtuig_ID = ? AND Aantal_plaatsen > ?"
adap.SelectCommand.Parameters.Add("@vliegtuigid", SqlDbType.Int).Value = vliegtuigid
adap.SelectCommand.Parameters.Add("@aantalpassagiers", SqlDbType.Int).Value = (Val(aantalpassagiers))

adap.Fill(dsvliegtuigpassagiers)


If dsvliegtuigpassagiers.Tables(0).Rows.Count = 0 Then
Return False 'indien vliegtuig te klein is
Else
Return True
End If
End Function

Quxan

Legacy Member
sorry voor dubbel post, maar kzit weer met een probleempje (ets gelijkaardigs):

eerst wat wel werkt:
adap.SelectCommand.CommandText = "SELECT Vliegtuig_ID, Start, Einde FROM vluchtboeking WHERE Vliegtuig_ID = ? AND Start BETWEEN '18/09/2006 12:40' AND '18/09/2006 13:45'"
adap.SelectCommand.Parameters.Add("@vliegtuigid", SqlDbType.Int).Value = vliegtuigid
die groene dingen moeten uiteraard veranderd worden, maar als ik dat doe dan werkt het niet (rijen zijn dan altijd leeg, wat nochtans niet zou mogen):(

wat niet werkt:
'adap.SelectCommand.CommandText = "SELECT Vliegtuig_ID, Start, Einde From vluchtboeking WHERE Vliegtuig_ID = ? AND Start BETWEEN ? AND ?"
'adap.SelectCommand.Parameters.Add("@vliegtuigid", SqlDbType.Int).Value = vliegtuigid
'adap.SelectCommand.Parameters.Add("@vluchtstart", SqlDbType.Int).Value = nietbeschikbaarstartdt
'adap.SelectCommand.Parameters.Add("@vluchteinde", SqlDbType.Int).Value = nietbeschikbaareinddt
(zowel nietbeschikbaarstartdt als nietbeschikbaareinddt zijn van het type DateTime)

als ik
MsgBox("de datum is " & nietbeschikbaarstartdt, 48, "Opgelet")
laat lopen krijg ik dit dus ik veronderstel dat het juist opgeslaan zit...

servi

Legacy Member
Het type is hoogstwaarschijnlijk niet een Int, maar een DateTime, Date , Time of iets dergelijke.

Verander dus
adap.SelectCommand.Parameters.Add("@vluchtstart", SqlDbType.Int).Value = nietbeschikbaarstartdt
naar
adap.SelectCommand.Parameters.Add("@vluchtstart", SqlDbType.Timestamp).Value = nietbeschikbaarstartdt

Quxan

Legacy Member
servi zei:
Het type is hoogstwaarschijnlijk niet een Int, maar een DateTime, Date , Time of iets dergelijke.

Verander dus
adap.SelectCommand.Parameters.Add("@vluchtstart", SqlDbType.Int).Value = nietbeschikbaarstartdt
naar
adap.SelectCommand.Parameters.Add("@vluchtstart", SqlDbType.Timestamp).Value = nietbeschikbaarstartdt


heb geprobeerd met .timestamp en met .datetime, maar niks werkt :(

servi

Legacy Member
en smalldatetime ?


edit : nietbeschikbaarstartdt is toch geen string hoop ik ?
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan