Probleme pour requete Select en VB ??

nico8001 Messages postés 92 Date d'inscription mercredi 9 juin 2010 Statut Membre Dernière intervention 30 juin 2010 - 28 juin 2010 à 09:18
nico8001 Messages postés 92 Date d'inscription mercredi 9 juin 2010 Statut Membre Dernière intervention 30 juin 2010 - 28 juin 2010 à 16:17
Bonjour,

j'ai un probleme pour ma requete select
j'ai une base de données access 2000 et je suis sur visual basic 2008
j'ai mi un messagebox en fin pour voir si la requete marche et si elle me renvoi bien l'adresse IP et pour la requete , il selectionne bien le nom de la 1e machine dans la liste par contre il me renvoi pas l'adresse IP , il se connecte pas avec la base j'ai l'impression

Voila mon code :

Dim i As Long

Dim oleDbConnex As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=C:\BDD.mdb")
oleDbConnex.Open()
Dim CmdIP As New OleDb.OleDbCommand("SELECT AdresseIP FROM Machine WHERE NomMachine = '" & LB_ListeMachines.Items(i) & "' ", oleDbConnex)
Dim TA1 As New OleDb.OleDbDataAdapter(CmdIP)
TA1.Fill(DT)

Dim var As String
For i = 0 To LB_ListeMachines.Items.Count - 1
var = "\" & DT.Rows(i)("AdresseIP").ToString() & "\ia"
Dim DestDir As String = var

MessageBox.Show("SELECT AdresseIP FROM Machine WHERE NomMachine = '" & LB_ListeMachines.Items(i) & "' ")
MessageBox.Show(var)

oleDbConnex.Close()

Merci.

10 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
28 juin 2010 à 10:49
Salut
Apprends à utiliser la coloration syntaxique quand tu colles du code, c'est plus facile à lire-comprendre = 3ème icone à droite.

"il se connecte pas avec la base j'ai l'impression"
Que vaut oleDbConnex.State après le Open ?

'i' est initialisé et tu t'en sers tout de suite. 'i' vaut donc 0.
Dans
LB_ListeMachines.Items(i)
Pourquoi ne pas avoir écrit directement
LB_ListeMachines.Items(0) ?
Ca évite de se demander ce qu'il peut y avoir dans 'i'

Le For n'a pas de Next

S'il y a un Next quelque part, la boucle doit faire référence au nombre d'items dans ton TA1 et pas de ton LB_ListeMachines

A quoi sert ta variable DestDir ?

première MessageBox : A quoi te sert de réécrire la syntaxe de la requète ?
Elle est déjà stockée dans CmdIP = source d'erreur

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
nico8001 Messages postés 92 Date d'inscription mercredi 9 juin 2010 Statut Membre Dernière intervention 30 juin 2010
28 juin 2010 à 10:59
j'ai pas de oleDbConnex.state ?!

si mon next est dans mon code cest que j'ai oublier de le coller la dessus
bha atend je vais mettre le code complet je pence que sa repondra a quelques questions

voila :

Dim i As Long

        Dim oleDbConnex As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=C:\Documents and Settings\nicolas_larue\Mes documents\DéploiementDeSynoptiques\BDD.mdb")
        oleDbConnex.Open()
        Dim CmdIP As New OleDb.OleDbCommand("SELECT AdresseIP FROM Machine WHERE NomMachine = '" & LB_ListeMachines.Items(i) & "' ", oleDbConnex)
        Dim TA1 As New OleDb.OleDbDataAdapter(CmdIP)
        TA1.Fill(DT)

        Dim var As String
        'Dim IP As String
        For i = 0 To LB_ListeMachines.Items.Count - 1
            'IP = DT.Rows(i)("AdresseIP").ToString()
            var = "\" & DT.Rows(i)("AdresseIP").ToString() & "\ia"
            Dim DestDir As String = var
            MessageBox.Show("SELECT AdresseIP FROM Machine WHERE NomMachine = '" & LB_ListeMachines.Items(i) & "' ")
            MessageBox.Show(var)
            Try
                For Each Item As String In LB_ListeFichier.Items
                    Try
                        Dim Filename As String = Item.Substring(Item.LastIndexOf(""), Item.Length - Item.LastIndexOf(""))
                        IO.File.Copy(Item, DestDir & Filename)
                        Application.DoEvents() 'Evite le Freez de l'appli 
                    Catch copyError As IOException
                        MessageBox.Show("Erreur pour la copie des fichiers ! " & copyError.Message)
                    End Try
                Next
            Catch dirNotFound As DirectoryNotFoundException
                MessageBox.Show(" Erreur de copie ! " & dirNotFound.Message)
            End Try
        Next i
        oleDbConnex.Close()
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
28 juin 2010 à 11:21
"j'ai pas de oleDbConnex.state ?!"
Bien sûr que si
0
nico8001 Messages postés 92 Date d'inscription mercredi 9 juin 2010 Statut Membre Dernière intervention 30 juin 2010
28 juin 2010 à 11:26
en tout cas je ne sais pas ce que c'est :s
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
28 juin 2010 à 11:32
De plus :
IO.File.Copy(Item, DestDir & Filename)

DestDir se termine par le 'a' de 'ia"
FileName est le nom de ton fichier
--> Il manque un \ entre les deux

TA1.Fill(DT)
C'est quoi 'DT' ?

Comme je te l'ai dit, ce sont les résultats du qu'il faut scanner, pas celle de la ListBox.
Si la requète ne trouve pas de machine portant ce nom :
- tu n'auras pas autant de résultat que de machines
- tu risques un décalage des items
For i = 1 To TA1.TableMappings.Count  ' à vérifier
...
            MessageBox.Show(DT.Rows(i)("NomMachine").ToString())
            MessageBox.Show(var)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
28 juin 2010 à 11:33
Si tu ne sais pas ce que c'est, tu n'attends pas qu'on te l'explique : tu regarde dans l'aide !
0
nico8001 Messages postés 92 Date d'inscription mercredi 9 juin 2010 Statut Membre Dernière intervention 30 juin 2010
28 juin 2010 à 11:35
Dt cest mon database
0
nico8001 Messages postés 92 Date d'inscription mercredi 9 juin 2010 Statut Membre Dernière intervention 30 juin 2010
28 juin 2010 à 11:38
mais ce qui apparait dans ma listbox c'est le resulat d'une requete select dans ma base donc il trouvera forcement le nom de la machine
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
28 juin 2010 à 12:45
Oui, mais qui te dit qu'il y a bien une adresse IP en face ?
Es-tu sûr que les IP apparaitront dans le même ordre dans ton DT que dans ta ListBox ?
Tu fais comme tu veux, mais méfies-toi ...
0
nico8001 Messages postés 92 Date d'inscription mercredi 9 juin 2010 Statut Membre Dernière intervention 30 juin 2010
28 juin 2010 à 16:17
bha oui dans ma base de données je suis sur qu'il y a une adresse IP pour chaque nom de machine qui apparaissent
0
Rejoignez-nous