Bonjour,
Je souhaiterai savoir comment faire pour récupérer la valeur d'un select. En effet, à partir de cette valeur je voudrai faire un ping de la valeur retourné par le select.
Version imprimable
Bonjour,
Je souhaiterai savoir comment faire pour récupérer la valeur d'un select. En effet, à partir de cette valeur je voudrai faire un ping de la valeur retourné par le select.
Bonjour,
D'un SELECT ? Sur une BDD ? Avec un peu de code ce serait mieux pour voir ce que tu as déjà fait !
Désolé j'ai oublié de mettre mon code :
Pour le moment, je n'ai pas fait grand chose mais c'est surtout que je ne vois pas comment ne récupérer la valeur du select :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 Private Sub RadioButton2_Click(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles RadioButton2.Click 'Envoyer ping sur toutes les machines sélectionner par l'utilisateur et si le ping est un succes ne 'rien faire sinon indiquer le message d'échec et voir si on peut la réveiller avec une nouvelle 'tentative de ping Try connexion.ConnectionString = "Data Source=C:\Documents and Settings\Michael BRUNIAS\Mes documents\bddplg.sdf;Persist Security Info=False;" connexion.Open() Dim nombre As Integer = MachineFinal.Items.Count For i As Integer = 0 To nombre - 1 Dim nom As String = MachineFinal.Items.Item(i) If (nom.StartsWith("P")) Then Dim requete As SqlCeCommand = New SqlCeCommand("Select adresseipp from MachineP where nomp = '" & nom & "'", connexion) Dim adresse As String ElseIf (nom.StartsWith("A")) Then ElseIf (nom.StartsWith("R")) Then End If Next connexion.Close() Catch ex As Exception MsgBox(ex) End Try End Sub
Bonjour,
J'ai l'impression qu'il te manque des éléments pour initialiser ta connexion/requête.
En tout cas je te conseil de passer par un datareader pour récupérer ta ou tes valeurs retournées par ta requête.
Oui j'étais en trin de travailler sur la manière de récupérer la valeur :
Bon y'as encore énormément de bug (je n'arrive pas à récupérer la valeur ^^)
Je vous met le code :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 Private Sub RadioButton2_Click(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles RadioButton2.Click 'Envoyer ping sur toutes les machines sélectionner par l'utilisateur et si le ping est un succes ne 'rien faire sinon indiquer le message d'échec et voir si on peut la réveiller avec une nouvelle 'tentative de ping Try connexion.ConnectionString = "Data Source=C:\Documents and Settings\Michael BRUNIAS\Mes documents\bddplg.sdf;Persist Security Info=False;" connexion.Open() Dim nombre As Integer = MachineFinal.Items.Count For i As Integer = 0 To nombre - 1 Dim nom As String = MachineFinal.Items.Item(i) If (nom.StartsWith("P")) Then Dim requete As SqlCeCommand = New SqlCeCommand("Select adresseipp from MachineP where nomp = '" & nom & "'", connexion) Dim adresse As String Dim Reader As SqlCeDataReader = requete.ExecuteReader adresse = Reader.GetString(0) MsgBox(adresse) ElseIf (nom.StartsWith("A")) Then ElseIf (nom.StartsWith("R")) Then End If Next connexion.Close() Catch ex As Exception MsgBox(ex) End Try End Sub
Précisions possibles sur les points suivants ?
Que te retourne ton msgbox(adresse) ?
Ta chaine de connexion est elle bonne ?
As tu tester ta requête directement sur la base pour voir si elle te retourne des valeurs ?
As tu des messages d'erreur lors de l'exécution ?
Rapide la réponse ^^
Alors tout d'abord
Mon msgbox ne me retourne rien car l'erreur ArgumentException resort.
Ensuite je suis sur de ma chaîne de connexion car je l'ai déjà utilisé dans un bout de code plus haut et je me suis assurer de la fermer.
Enfin je n'ai pas tester ma requête directement sur ma base je vais d'ailleurs le faire de ce pas
Je viens de tester ma requête sur ma base de données directement et effectivement j'ai un problème à ce niveau là
En effet, j'ai vérifier si ma base n'était pas vide de ce côté là ça va :ccool: Ensuite j'ai effectué la commande select suivante :
Ou bien sur PGMI201-1 fait effectivement partie des machines qui se trouve dans ma base. Mon problème vient du fait que la syntaxe de ma requête est mauvaise car j'obtiens l'erreur :Code:
1
2
3 SELECT adresseipp FROM MachineP WHERE (nomp = [PGMI201-1])
Citation:
Le nom de colonne n'est pas valide. [None name (if any)= , Column Name = PGMI201-1 ]
Je suppose qu'il sagit d'un champs "texte" donc il faut aussi penser à rajouter des quotes sur ton nom de machine.
oui effectivement ca marche mais alors je comprend pas pourquoi ca ne marche pas puisque dans ma requete sql de mon code ne marche pas puisque j'ai des quotes '
Je me trompe peut être mais ne faut il pas initialiser ta connexion ?
New SqlceConnexion(tachainedeconnexion) ?
J'ai modifier un peu ton code :
Je me sui basé sur des fonction que j'ai écrit avec connexion oracle, mais la synthaxe reste sur le même principe :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 Private Sub RadioButton2_Click(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles RadioButton2.Click 'Envoyer ping sur toutes les machines sélectionner par l'utilisateur et si le ping est un succes ne 'rien faire sinon indiquer le message d'échec et voir si on peut la réveiller avec une nouvelle 'tentative de ping Try connexion.ConnectionString = "Data Source=C:\Documents and Settings\Michael BRUNIAS\Mes documents\bddplg.sdf;Persist Security Info=False;" dim CNX as new SQLceConnection(connexion.ConnectionString) Dim nombre As Integer = MachineFinal.Items.Count For i As Integer = 0 To nombre - 1 Dim nom As String = MachineFinal.Items.Item(i) If (nom.StartsWith("P")) Then Dim requete As SqlCeCommand = New SqlCeCommand("Select adresseipp from MachineP where nomp = '" & nom & "'", CNX) CNX.open Dim adresse As String Dim Reader As SqlCeDataReader = requete.ExecuteReader adresse = Reader.GetString(0) MsgBox(adresse) ElseIf (nom.StartsWith("A")) Then ElseIf (nom.StartsWith("R")) Then End If Next CNX.close Catch ex As Exception MsgBox(ex) End Try End Sub
Exemple :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Function getPatSituVie(ByVal refMda As String) As String Dim maRecup As String Dim SQL As String = "SELECT OGMDA.T_SITUVIE.lib_situvie FROM OGMDA.T_SITUVIE WHERE OGMDA.T_SITUVIE.id_situvie=(SELECT OGMDA.T_PATIENT.id_situvie FROM OGMDA.T_PATIENT WHERE OGMDA.T_PATIENT.mdaref='" & refMda & "')" Dim CNX As New OracleConnection(CNXstr_ogmda) Dim recupSQL As New OracleCommand(SQL, CNX) CNX.Open() Dim dreader As OracleDataReader = recupSQL.ExecuteReader dreader.Read() maRecup = dreader.Item(0).ToString() dreader.Close() CNX.Close() Return maRecup End Function
Voici mon code :
Le problème est que j'ai toujours la même erreur et là je vais tenter de faire un breakpoint pour voir où ca plante et si jamais je ne comprend pas ou ne trouve pas pourquoi ca plante je vous fait signeCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 Private Sub RadioButton2_Click(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles RadioButton2.Click 'Envoyer ping sur toutes les machines sélectionner par l'utilisateur et si le ping est un succes ne 'rien faire sinon indiquer le message d'échec et voir si on peut la réveiller avec une nouvelle 'tentative de ping Try connexion.ConnectionString = "Data Source=C:\Documents and Settings\Michael BRUNIAS\Mes documents\bddplg.sdf;Persist Security Info=False;" Dim cbx As New SqlCeConnection(connexion.ConnectionString) Dim nombre As Integer = MachineFinal.Items.Count For i As Integer = 0 To nombre - 1 Dim nom As String = MachineFinal.Items.Item(i) If (nom.StartsWith("P")) Then Dim requete As SqlCeCommand = New SqlCeCommand("Select adresseipp from MachineP where nomp = """ & nom & "", connexion) cbx.Open() Dim adresse As String Dim Reader As SqlCeDataReader = requete.ExecuteReader Dim num As Integer = Reader.FieldCount adresse = Reader.GetString(num) MsgBox(adresse) ElseIf (nom.StartsWith("A")) Then ElseIf (nom.StartsWith("R")) Then End If Next connexion.Close() Catch ex As Exception MsgBox(ex) End Try End Sub
Sinon je vous donnerai la raison du plantage
essaye de remplacer
parCode:Dim requete As SqlCeCommand = New SqlCeCommand("Select adresseipp from MachineP where nomp = """ & nom & "", connexion)
et remplaceCode:Dim requete As SqlCeCommand = New SqlCeCommand("Select adresseipp from MachineP where nomp = """ & nom & "", cbx)
parCitation:
connexion.close
Citation:
cbx.close
Alors voilà le problème :
Aucune donnée n'existe pour la ligne/colonne.
Me reste plus qu'à trouver pourquoi alors que la base est plein
Il faut initialiser ton reader.Code:
1
2
3 Reader.read adresse = Reader.GetString(num)
Après de multiple problème avec la requête et une fois celle ci résolu. Le dernier problème parlait d'une erreur d'index donc pour ceux que ça intéresse je met le code qui marche à 100% car on ne sait jamais si quelqu'un cherche à faire comme moi ca peut être utile ^^ :ccool:
En tout cas un grand merci à tout ceux qui m'ont aidé à résoudre ce problèmeCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 Private Sub RadioButton2_Click(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles RadioButton2.Click 'Envoyer ping sur toutes les machines sélectionner par l'utilisateur et si le ping est un succes ne 'rien faire sinon indiquer le message d'échec et voir si on peut la réveiller avec une nouvelle 'tentative de ping Try connexion.ConnectionString = "Data Source=C:\Documents and Settings\Michael BRUNIAS\Mes documents\bddplg.sdf;Persist Security Info=False;" Dim cbx As New SqlCeConnection(connexion.ConnectionString) Dim nombre As Integer = MachineFinal.Items.Count For i As Integer = 0 To nombre - 1 Dim nom As String = MachineFinal.Items.Item(i) If (nom.StartsWith("P")) Then Dim requete As SqlCeCommand = New SqlCeCommand("Select adresseipp from MachineP where nomp = '" & nom & "'", cbx) cbx.Open() Dim adresse As String = "" Dim Reader As SqlCeDataReader = requete.ExecuteReader Dim num As Integer = Reader.FieldCount Reader.Read() adresse = Reader.GetString(num - 1) MsgBox(adresse) Reader.Close() requete.Dispose() ElseIf (nom.StartsWith("A")) Then ElseIf (nom.StartsWith("R")) Then End If cbx.Close() Next Catch ex As Exception MsgBox(ex) End Try End Sub
De rien.
Petite précision :
Le reader.getstring() prend en paramètre l'index de la colonne et débute à 0. D'où ton problème d'index car tu faisais un count du nombre de colonne, et donc forcément il te ramenait 1 vu que tu avais une colonne, mais comme tu n'a qu'un seul champs (d'index 0 du coup), tu était hors index.
Tu peux même enlever cette partie de ton fieldcount et juste mettre 0 à la place de num-1.
Bonne fin de journée.
Effectivement j'avais remarqué ce souci et j'ai donc enlever le fieldcount pour mettre 0 à la place.
Bonne journée