IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

SQL et VB.NET


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Technical Team Leader
    Inscrit en
    Avril 2010
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technical Team Leader
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2010
    Messages : 235
    Par défaut SQL et VB.NET
    Bonjour j'ai un petit problème d'"insert into" dans une table, j'importe le calendrier de outlook, je fais une boucle FOR ... NEXT pour copier les éléments dans ma table voici un extrait de mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
       For i = 1 To lngItemCount
     
                On Error Resume Next
                objItem = oCal.Items(i)
                On Error GoTo 0
     
                If Not objItem Is Nothing Then ' this is an appointment item
     
                    With objItem
                        début = Format(.Start, "dd/mm/yyyy hh:mm") 'Début
                        fin = Format(.End, "dd/mm/yyyy hh:mm") ' Fin
                        date1 = Format(.End, "dd/mm/yyyy") ' Date
                        duree = Format((.Duration / 1440) / 1, "hh:mm") ' Durée
                        objet = .Subject ' Objet
                        nom = .Location ' Nom
                        de = .Organizer ' De
                        body = Replace(.Body, "&0A", vbCrLf) 'Contenu
                        categories = .Categories ' Categories
                    End With
     
                    'objItem = Nothing
                End If
                'Instancier un objet Commande
                ObjetCommand = New OleDbCommand
                ObjetCommand.Connection = ObjetConnection
                ObjetCommand.CommandType = CommandType.Text
                ObjetCommand.CommandText = "INSERT INTO Calendar_net ( [Date], [début], [Fin], [Durée], [Objet], [Nom], [De], [Contenu], [Categories] ) VALUES ('" & date1 & "', '" & début & "', '" & fin & "', '" & duree & "', '" & objet & "', '" & nom & "', '" & de & "', '" & body & "', '" & categories & "')"
                ObjetCommand.ExecuteNonQuery()
     
                tmp = tmp + 1 '(oItems.Count / 8) 
                ProgressBar1.Value = tmp
     
                ' Nettoyage
                oApp = Nothing
                oNS = Nothing
                début = Nothing
                fin = Nothing
                date1 = Nothing
                duree = Nothing
                objet = Nothing
                nom = Nothing
                de = Nothing
                body = Nothing
                categories = Nothing
     
            Next i
    j'ai un problème avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ObjetCommand.CommandText = "INSERT INTO Calendar_net ( [Date], [début], [Fin], [Durée], [Objet], [Nom], [De], [Contenu], [Categories] ) VALUES ('" & date1 & "', '" & début & "', '" & fin & "', '" & duree & "', '" & objet & "', '" & nom & "', '" & de & "', '" & body & "', '" & categories & "')"
    si je laisse les VALUES en variable, il me fait un 1er traitement, il va jusqu'à "Next i" puis remonte à "For i" il lit tout jusqu'à "ObjetCommand.ExecuteNonQuery()" et sur la commande il bloque...

    si je change ma commande et je remplace les variables par du texte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ObjetCommand.CommandText = "INSERT INTO Calendar_net ( [Date], [début], [Fin], [Durée], [Objet], [Nom], [De], [Contenu], [Categories] ) VALUES ('09/15/2010', '09/30/2010 02:30', '09/15/2010 04:15', 'h:mm', '0000000', 'non de l'article', 'name', '', 'derniere minute')"
    la ca marche, j'ai 100 lignes identique dans ma table mais ca marche,

    je sais pas trop, mais j'ai l'impression qu'en mettant à jour les variables il bug ???

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2008
    Messages : 161
    Par défaut
    Quel message il t'affiche lorsqu'il se bloque ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Technical Team Leader
    Inscrit en
    Avril 2010
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technical Team Leader
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2010
    Messages : 235
    Par défaut
    rien il est inerte, lol il bloque sur la ligne et je suis obliger de l'arrêter manuellement

  4. #4
    Membre éclairé
    Homme Profil pro
    Technical Team Leader
    Inscrit en
    Avril 2010
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technical Team Leader
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2010
    Messages : 235
    Par défaut
    Je crois que c'est parce que dans le item '.Body' j'ai un élément qui est avec plusieurs sauts de ligne...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    body = Replace(.Body, "&0A", vbCrLf) 'Contenu
    et mon code doit merder

  5. #5
    Membre très actif
    Avatar de alex61
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2010
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 378
    Par défaut
    tu doit surement ouvrir la connexion avant d'exécuter ta requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     ObjetCommand.open()
    ObjetCommand.ExecuteNonQuery()
    et aprés la fermer avec .close


    cordialement

  6. #6
    Membre éclairé
    Homme Profil pro
    Technical Team Leader
    Inscrit en
    Avril 2010
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technical Team Leader
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2010
    Messages : 235
    Par défaut
    non pour la connection je l'ouvre et ferme qu'une seule fois et c'est en dehors de ma boucle, je crois que ça vient du .body

  7. #7
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 251
    Par défaut
    Ces 3 lignes là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                ObjetCommand = New OleDbCommand
                ObjetCommand.Connection = ObjetConnection
                ObjetCommand.CommandType = CommandType.Text
    sont à mettre en dehors de la boucle For.

    Dans ton cas, la ligne suivante (avec la requete) pourrait elle-aussi être mise en dehors de la boucle si tu utilisait une requete paramétrée.

    Et indique le message d'erreur que tu obtiens que l'on y voie plus clair.

    Et supprime aussi les 2 "On Error ...". On utilise plus ça en .Net

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/05/2007, 10h35
  2. [VB.NET] Inventaire SQL sous VB.Net + SMO
    Par _n1n1_ dans le forum Accès aux données
    Réponses: 2
    Dernier message: 18/04/2007, 16h37
  3. [SQL 2005][ASP.net 2]Insertion de date dans une table
    Par skystef dans le forum Accès aux données
    Réponses: 2
    Dernier message: 29/12/2006, 09h26
  4. [SQL Server][ASP.net] clefs étrangères qui ne se propagent pas
    Par skystef dans le forum Accès aux données
    Réponses: 3
    Dernier message: 21/12/2006, 11h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo