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 6 et antérieur Discussion :

[VB 6.0 + sql server] pb insertion de lignes trop nombreuses


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 5
    Par défaut [VB 6.0 + sql server] pb insertion de lignes trop nombreuses
    Bonjour,

    Je souhaite insérer dans une base MS sql server 2005 un grand nombre d'enregistrements dans une table via une application Visual Basic 6.0 qui récupère les données depuis un fichier texte.

    Malheureusement au bout de la 915ème ligne environ, l'insertion plante.

    Je pense donc à un dépassement mémoire (dépassement de buffer, etc). Mais je ne sais comment régler ce problème.

    J'utilise une boucle qui lit le fichier texte et pour chaque lignes j'utilise la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ConnexionBD.Execute ("INSERT INTO Nom_table VALUES('champ1', 'champ2')")
    Merci de votre aide.

    Cordialement.

  2. #2
    Membre éprouvé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Par défaut
    Citation Envoyé par flores
    Malheureusement au bout de la 915ème ligne environ, l'insertion plante.
    Il n'ya pas de message d'erreur ?

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 5
    Par défaut
    Non en fait à l'apparition de l'erreur il y a un appel à la fonction "handler_erreur" qui elle me renvoie un message que j'ai défini.
    Mais quand je veux faire afficher le numéro de l'erreur dans les logs ça me renvoie "--" ce qui ne nous avance pas beaucoup...

    Je n'arrive pas à trouver quel élément devient "plein" en mémoire, ce qui pourrait être la cause de l'insertion ratée.

    J'ai vérifier mes variables genre String, j'ai changé un Integer en Long, mais a priori ce ne sont pas mes variables qui posent problème...

    Quel casse-tête !

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Par défaut
    Bonjour,

    peux-tu afficher le code complet de ta boucle ? ainsi que ton mode de connexion à la base de données ?

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 5
    Par défaut
    voici l'extrait qui pose problème :

    à ce niveau-là, on est déjà connecté à la base :
    (mode de connexion standard d'un utilisateur autorisé)

    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
    ' Ouverture du fichier trafic_hotspot.txt où sont écrites les lignes de trafic
    Set StreamFichierTrafic = fso.OpenTextFile(RepertoireTempLocal + "\xxxxxxx.txt")
            
    ' Parcours du fichier
    While (Not StreamFichierTrafic.AtEndOfStream)
      tuple = StreamFichierTrafic.ReadLine
      nbLignes = nbLignes + 1
                     
      ' on sépare le tuple pour récupérer les champs délimités par ";"
      stringSplitted = Strings.Split(tuple, ";")
                        
      'première ligne de vérification
      If (nbLignes = 1) Then
        ' la première ligne a le format suivant : DEBUT;date_traitement;NbLignesTrafic
        If (StrComp(stringSplitted(0), "DEBUT") = 0) Then
          dateTraitement = Format$(stringSplitted(1), "dd/mm/yyyy") + " " + Format(Time, "hh:mm:ss")
          NbLignesAttendu = stringSplitted(2)
          ' on insère la date du traitement dans la table xxxxx avec l'état A = en cours
          ConnexionBD.Execute ("INSERT INTO xxxxx VALUES('duTexte','" + dateTraitement + "','A','" + FichierLogs + "')")
        Else
          'la première ligne de vérification n'est pas valide
          Injection_Trafic_BD = "Erreur"
        End If
                        
      ElseIf (nbLignes > 1) Then
        dateInsertion = Format$(stringSplitted(1), "dd/mm/yyyy")
        Call Ecriture_Log(stringSplitted(0) + "  " + dateInsertion + "  " + stringSplitted(2))
        ' + " " + Format(Time, "hh:mm:ss")
        ConnexionBD.Execute ("INSERT INTO Table_xx VALUES ('" + stringSplitted(0) + "','" + dateInsertion + "','" + stringSplitted(2) + "')")
      End If
    Wend

Discussions similaires

  1. [SQL Server - Formulaire] Insertion, modification, suppression
    Par Jiraiya42 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 03/10/2008, 16h15
  2. Réponses: 2
    Dernier message: 25/09/2008, 10h15
  3. Réponses: 1
    Dernier message: 22/09/2006, 13h56
  4. [sql server]utiliser Insert avec une clé auto
    Par nourbane dans le forum ASP
    Réponses: 6
    Dernier message: 18/05/2006, 23h02
  5. MAJ d'une table sous SQL Server par insertion
    Par keish dans le forum Langage SQL
    Réponses: 6
    Dernier message: 11/06/2003, 16h23

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