cs_c4sp
Messages postés11Date d'inscriptiondimanche 17 mai 2009StatutMembreDernière intervention18 novembre 2009
-
17 nov. 2009 à 14:19
cs_c4sp
Messages postés11Date d'inscriptiondimanche 17 mai 2009StatutMembreDernière intervention18 novembre 2009
-
18 nov. 2009 à 15:28
Bonjour,
Je débute en asp.net. J'ai commencé un site web tout en asp. Sur une page j'ai créé un formulaire de recherche.
Les resultats sont afficher dans un gridview lié à une base de donnée oracle.
Je veux me servir des textbox et autres dropdownlist du formulaire de recherche comme des paramètre de la commande select de ma source de donnée.
Si j'utilise un paramètre (ex nom) la requete marche, si j'utilise 2, 3 ou plus de paramètres sa bugue et je ne sais pas pourquoi.
(Tout est en code behind a la demande de mon patron.)
Voici un extrait du code.
Protected Sub BtnRechercher_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnRechercher.Click
Oim()
End Sub
Protected Sub Oim()
Dim Sc As String = ""
Dim io As Integer = 0
Me.OracleDataSource1.SelectParameters.Clear()
Sc = "SELECT * FROM eleve"
If DDLciv.SelectedValue <> -1 Then
Me.OracleDataSource1.SelectParameters.Add("civ", DDLciv.SelectedValue)
Sc Sc & " WHERE ((civ ?))"
Me.OracleDataSource1.SelectParameters("civ").DefaultValue = DDLciv.SelectedValue
io = 1
End If
If Not TBnom.Text = String.Empty Then
Me.OracleDataSource1.SelectParameters.Add("nom", TBnom.Text)
If io = 0 Then
Sc Sc & " WHERE ((nom '?'))"
io = 1
Else
Sc Replace(Sc, "))", ") AND (nom '?'))")
End If
Me.OracleDataSource1.SelectParameters("nom").DefaultValue = TBnom.Text
End If
If Not TBprenom.Text = String.Empty Then
Me.OracleDataSource1.SelectParameters.Add("prenom", TBprenom.Text)
If io = 0 Then
Sc Sc & " WHERE ((prenom '?'))"
io = 1
Else
Sc Replace(Sc, "))", ") AND (prenom '?'))")
End If
Me.OracleDataSource1.SelectParameters("prenom").DefaultValue = TBprenom.Text
End If
Me.OracleDataSource1.SelectCommand = Sc
End Sub
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 18 nov. 2009 à 12:26
Salut,
A première vue ta requête peut généré 2 fois une clause where (si prénom et nom sont renseignés en même temps) mais ce n'est pas cela qui cloche, ce qui ne vas pas c'est tes paramètres :
Me.OracleDataSource1.SelectParameters.Add("nom", TBnom.Text)
If io = 0 Then
Sc Sc & " WHERE ((nom '?'))"
Par contre, je ne suis pas un spécialiste Oracle, essaye simplement cela :
Me.OracleDataSource1.SelectParameters.Add("nom", TBnom.Text)
If io = 0 Then
Sc Sc & " WHERE ((nom @nom))"
je pense que lors ce que tu as une requête du type :
SELECT * FROM eleve WHERE ((civ ?) AND (nom ?))
Le serveur ne sait identifier seule quel paramètre correspond, par défaut il les prendra dans l'ordre, par contre ne met pas tes "?" entre apostrophes ('?'), car il les conciderera comme une chaîne de texte et non un paramètre.
Je te le redis, je ne suis pas expert oracle ni en syntaxe SQL, ce n'est que de simples supposition à tester.
++ Mayzz.
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.