zang68
Messages postés6Date d'inscriptionlundi 7 juin 2010StatutMembreDernière intervention 8 juin 2010
-
7 juin 2010 à 20:55
zang68
Messages postés6Date d'inscriptionlundi 7 juin 2010StatutMembreDernière intervention 8 juin 2010
-
8 juin 2010 à 15:15
Bonjour,
dans une application en VB.net connecté a oracle, j'ai une requête avec jointure que je n'arrive pas a afficher.
voici la partie du code ou elle ce trouve:
[b]Private Sub Cmbcli_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cmbcli.SelectedIndexChanged
Dim CmdOra2 As OracleCommand
Dim LecOra2 As OracleDataReader
Dim test As String
CmdOra2 = New OracleCommand("SELECT * FROM CLIENT WHERE CLIENT.NOM_CLI='" & Cmbcli.SelectedItem.ToString & "'", OConnexion)
'CmdOra.Connection = OConnexion
'CmdOra.CommandText = "SELECT CLIENT.CODE_CLI,CLIENT.NOM_CLI,NOM_VILLE.VILLE FROM CLIENT VILLE WHERE CODEPOSTAL.CLIENT=CODEPOSTAL.VILLE;"
LecOra2 = CmdOra2.ExecuteReader()
MsgBox(LecOra2.ToString)
While LecOra2.Read
TxtCli.Text = LecOra2.GetValue(3) & " " & LecOra2.GetValue(2) & vbCrLf & LecOra2.GetValue(4) & vbCrLf & LecOra2.GetValue(1) & " " & "ville" & vbCrLf & "Tel.: " & LecOra2.GetValue(5)
End While
LecOra2.Close()
End Sub/b
L'erreur que cela me fait est l'exeception indexoutofrangeexception n'as pas été gérée
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 7 juin 2010 à 22:11
Première source possible : Cmdcli.SelectedItem.ToString. Si aucun item n'est sélectionné tu auras une erreur.
Seconde source possible : LecOra2.GetValue(5). Il faut que ta requete renvoie au moins 6 champs pour que tu puisse accéder au 6ème champs qui a pour index 5
[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
zang68
Messages postés6Date d'inscriptionlundi 7 juin 2010StatutMembreDernière intervention 8 juin 2010 8 juin 2010 à 09:37
merci,
pour l'idée des source,je me suis rendu compte que le code fourni était en partie celui de test qui était fonctionnel,en faite c'est au niveau de while mon problème puisque je n'arrive pas a afficher la ville dans mon addresse d'où le faite que TxtCli.Text a une valeur de texte nommé ville au lieu d'un LecOra2.GetValue(x)qui a ce moment la me donne l'erreur citer précedement.
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 8 juin 2010 à 14:19
Est-ce que ta requete renvoie la valeur de la ville. Avec ce code, la ville doit être le 7ème champ renvoyé par ta requete.
Pour ce code du while, la requete que tu execute doit te renvoyer dans l'ordre :
Champ inconnu | Code Postal | Prenom | Nom | Adresse | Telephone | Ville
Est-ce bien ça ????
[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
zang68
Messages postés6Date d'inscriptionlundi 7 juin 2010StatutMembreDernière intervention 8 juin 2010 8 juin 2010 à 14:30
quand je fait la requête uniquement sur ma table client par vb.net l'ordre est :
code client | code postal | Prenom | Nom | Adresse | Telephone
donc je suppose que oui avec la jointure la ville se rajoute en dernier, mais c'est la le problème je n'arrive pas a faire la jointure correctement je pense.
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 8 juin 2010 à 15:02
Ok, on va essayer avec ça alors :
CmdOra2 = New OracleCommand("SELECT CLIENT.*,VILLE.NOM_VILLE FROM CLIENT INNER JOIN VILLE ON CLIENT.CODEPOSTAL=VILLE.CODEPOSTAL
WHERE CLIENT.NOM_CLI='" & Cmbcli.SelectedItem.ToString & "'", OConnexion)
Le problème étant qu'un même code postal pouvant correspondre à plusieurs villes, tu vas récupérer autant de lignes que tu auras de correspondance CodePostal/Ville
[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i