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 :

Probleme d'insertion dans SQLSrv lors d'un traitement massif


Sujet :

VB 6 et antérieur

  1. #1
    Bradarys
    Invité(e)
    Par défaut Probleme d'insertion dans SQLSrv lors d'un traitement massif
    Salut,
    j'ai une application qui lit des données depuis des fichiers CSV, les transforme en unicode (windows-1256) et les enregsitre dans une base SQL Server.
    Le probleme c'est parfois j'obtient des champs (de la base ) qui sont vides
    alors qu'il ya des données dans le champs correspondant dans le CSV

    voici une partie du code qui fait l'import :

    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
    'Récupérer les champs du fichier CSV
        strSQL = "select * from [" & strFileName & "]"
        Set objRstSource = objCnxSource.Execute(strSQL)
        Set objFields = objRstSource.Fields
     
        'Récupérer les champs de la table SQL Server
        objRstDestination.Open strFileShortName, objCnxDestination, adOpenKeyset, adLockOptimistic, adCmdTable
        Debug.Print "*************************"
        Debug.Print strFileShortName
        Debug.Print "*************************"
        Do While Not objRstSource.EOF
     
            objRstDestination.AddNew
            For Each objField In objFields
     
                If (Not IsNull(objField.Value)) Then
     
                    Debug.Print objField.Name & " :" & objField.Value & vbCrLf
                    strFieldName = objField.Name
     
                    If IsArabicField(strFieldName) Then
                        objRstDestination.Fields(strFieldName) = Encode(objField.Value)
                    Else
                        objRstDestination.Fields(strFieldName) = objField.Value
                    End If
     
                End If
            Next
            objRstSource.MoveNext
            objRstDestination.Update
        Loop
    et voici une partie du fichier CSV :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    grpdoc	nottxt_arabic	notice
    OUV	          Titre propre : méthode de calcul numérique , vol 1 systèmes d'équations@    Auteur du document : NOUGIER Jean-pierre@          Présentation : 325 p. ; 28 cm@               I.S.B.N : 2-746-20278-6@           Publication : Paris 2001@Editeur / Distributeur : hermes@         Mots matières : analyse mathématique@	00000001
    OUV	          Titre propre : Cyberculture , rapport au Conseil de l'Europe dans le cadre du projet Nouvelles technologies, coopération culturelle et communication@    Auteur du document : LEVY Pierre@          Présentation : 313 p. ; 19 x 13 cm@               I.S.B.N : 2-7381-0512-2@           Publication : Paris - Strasbourg 1997 - 1997@Editeur / Distributeur : O. Jacob - Conseil de l'Europe@         Mots matières : systèmes de télécommunications , aspect social - technique et civilisation - réalité virtuelle@                Résumé : Qu'est-ce que la cyberculture? Quel mouvement social et culturel se cache derrière ce phénomène technique?... De la numérisation à la navigation, en passant par la mémoire, la programmation, les logiciels, la réalité virtuelle, le multimédia, l'interactivité, le courrier électronique, l'auteur tente de mesurer l'impact social et culturel des nouvelles technologies.@	00000090
    voici le code de la fonction Encode:
    Transforme l'encodage en windows-1256
    (c'est bête comme code mais ça fait l'affaire)


    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
    Public Function Encode(chaine As String) As String
    Dim fso
    Dim fl
    Dim objXML
    Dim objNode
    Dim objFile
    Dim strXML
     
    Set objFile = CreateObject("MSXML2.FreeThreadedDomDocument")
    Set strXML = CreateObject("MSXML2.FreeThreadedDomDocument")
    Set objXML = CreateObject("MSXML2.FreeThreadedDomDocument")
    objXML.async = False
    strXML.async = False
    objFile.async = False
    strXML.LoadXML ("<value>" & chaine & "</value>")
     
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set fl = fso.CreateTextFile("c:\temp.txt")
    fl.write ("<?xml version='1.0' encoding='windows-1256'?>" & strXML.xml)
    fl.Close
    Set fl = Nothing
     
    objFile.Load ("c:\temp.txt")
    objXML.LoadXML (objFile.xml)
    Set objNode = objXML.SelectSingleNode("value")
    Encode = objNode.Text
     
    End Function


  2. #2
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Hello!
    Quelques petites questions:
    Est-ce que le même champ disparait à chaque fois, si tu traites deux fois de suite le même fichier csv?
    As-tu testé ta fonction Encode( ) à la main sur les champ qui disparaissaient, pour voir?

  3. #3
    Bradarys
    Invité(e)
    Par défaut
    Salut,
    Oui,les champs dispraissent toujours,j'ai essayé plus que 10 fois le CSV.
    pour la fonction encode, elle marche trés bien.
    y a comme même un truc bizrarre:
    j'ai mi quelques(moins que 10) lignes de taille plus que 10Ko dans le CSV et sa passe,mais quand le CSV est plein plus que 10000 lignes sa passe pas !!
    J'ai eu une idée.
    je fait arreter le programme avec un sleep. avant les champs qui disparaissent et j'attends encore qu'il finisse.
    Merci

Discussions similaires

  1. probleme d'insertion dans une transaction
    Par iam dans le forum Bases de données
    Réponses: 1
    Dernier message: 17/05/2006, 10h18
  2. [C#] Probleme d'insertion dans un reader
    Par bletz dans le forum ASP.NET
    Réponses: 2
    Dernier message: 31/05/2005, 16h01
  3. [interbase6]probleme d'insertion dans une table
    Par macadam314 dans le forum Bases de données
    Réponses: 10
    Dernier message: 22/02/2005, 14h21
  4. [ADO.NET] Problème avec Insert dans base de données
    Par mpascolo dans le forum Accès aux données
    Réponses: 9
    Dernier message: 24/01/2005, 09h36
  5. Probleme d'insertion dans la base de données
    Par PrinceMaster77 dans le forum ASP
    Réponses: 5
    Dernier message: 11/06/2004, 16h21

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