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

Accès aux données Discussion :

[ADO.Net][VSTO][VBNet 2.0]Quel est format Date null Excell ?


Sujet :

Accès aux données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 23
    Points : 15
    Points
    15
    Par défaut [ADO.Net][VSTO][VBNet 2.0]Quel est format Date null Excell ?
    Voila j'essaye d'exporter des données de Excel vers SQL server mais le problème vient des dates.
    j'ai une colonne avec des cellules contenant des dates ou étant vides.
    voici 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
     
    dim monDataAdapter As New monDataSetTableAdapters.maTableTableAdapter
    dim monDataTable As New monDataSet.Table_exportDataTable
    Private appExcel As New Excel.Application
    Dim Classeur As Excel.Workbook = appExcel.Workbooks.Open(Me.TextBox1.Text)
    Dim Feuille As Excel.Worksheet = Classeur.ActiveSheet
    Dim nbrows As Integer
    nbrows = 2
    While Feuille.Cells&#40;nbrows, 1&#41;.value <> ""
                        monDataTable.AddmaTableRow&#40;System.Guid.NewGuid, Feuille.Cells&#40;nbrows, 2&#41;.value, Feuille.Cells&#40;nbrows, 3&#41;.value.ToString.Trim, Feuille.Cells&#40;nbrows, 5&#41;.value, Feuille.Cells&#40;nbrows, 7&#41;.value, Feuille.Cells&#40;nbrows, 10&#41;.value, Feuille.Cells&#40;nbrows, 15&#41;.value, Feuille.Cells&#40;nbrows, 18&#41;.value, Feuille.Cells&#40;nbrows, 19&#41;.value, Feuille.Cells&#40;nbrows, 20&#41;.value, Feuille.Cells&#40;nbrows, 21&#41;.value, Feuille.Cells&#40;nbrows, 22&#41;.value&#41;
                    nbrows += 1
    End While
    monDataAdapter.Update&#40;monDataTable&#41;
    appExcel.Quit&#40;&#41;
    mon idée est de parcourir mon fichier excel, d'insérer les cellules que je souhaite dans un DataTable, puis de mettre à jour ma BDD avec mon DataAdapter
    l'erreur vient lors de l'appel de la methode update, j'ai le message:
    "dépassement SQLDateTime. doit etre compris entre 1/1/1753 et 31/12/9999"
    en fait il n'arrive pas à insérer une date null dans ma BDD, pourtant mon champ date de ma BDD autorise les valeurs null et au niveau de mon dataset, mon champ date a pour DefaultValue DBNull

    si quelqu'un à une idée merci d'avance

  2. #2
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    A première vue, tu sembles avoir fait ce qu'il faut, la question est donc quelle valeur renvoie une cellule date null provenant d'Excell ?
    Car si tu as mis DBNull.Value comme valeur par défaut dans le DataTable et que pourtant une exception est levée, c'est que semble-t-il ta migration de données provenant d'Excell importe une valeur et non rien, et que c'est cette valeur qui est enregistrée dans le DataTable, ne permettant pas de garder la valeur par défaut :
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    si j'affiche ma cellule à chaque itération il m'affiche une chaine vide
    en ajoutant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MsgBox&#40;"<" + Feuille.Cells&#40;nbrows, 21&#41;.value + ">"&#41;
    à chaque itération, il m'affiche la chaine "<>" quand ma cellule est vide
    donc il n'interprete pas une chaine vide comme étant Null
    il faut peut etre que je force a null quand ma chaine est vide

    si je force avec System.DBNull.value
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    While Feuille.Cells&#40;nbrows, 1&#41;.value <> ""
            if String.IsNullOrEmpty&#40;feuille.cells&#40;nbrows,21&#41;.value then 
                        monDataTable.AddmaTableRow&#40;System.Guid.NewGuid, Feuille.Cells&#40;nbrows, 2&#41;.value, Feuille.Cells&#40;nbrows, 3&#41;.value.ToString.Trim, Feuille.Cells&#40;nbrows, 5&#41;.value, Feuille.Cells&#40;nbrows, 7&#41;.value, Feuille.Cells&#40;nbrows, 10&#41;.value, Feuille.Cells&#40;nbrows, 15&#41;.value, Feuille.Cells&#40;nbrows, 18&#41;.value, Feuille.Cells&#40;nbrows, 19&#41;.value, Feuille.Cells&#40;nbrows, 20&#41;.value, System.DBNull.value, Feuille.Cells&#40;nbrows, 22&#41;.value&#41; 
           else
    monDataTable.AddmaTableRow&#40;System.Guid.NewGuid, Feuille.Cells&#40;nbrows, 2&#41;.value, Feuille.Cells&#40;nbrows, 3&#41;.value.ToString.Trim, Feuille.Cells&#40;nbrows, 5&#41;.value, Feuille.Cells&#40;nbrows, 7&#41;.value, Feuille.Cells&#40;nbrows, 10&#41;.value, Feuille.Cells&#40;nbrows, 15&#41;.value, Feuille.Cells&#40;nbrows, 18&#41;.value, Feuille.Cells&#40;nbrows, 19&#41;.value, Feuille.Cells&#40;nbrows, 20&#41;.value, Feuille.cells&#40;nbrows,21&#41;.value, Feuille.Cells&#40;nbrows, 22&#41;.value&#41;
           end if
           nbrows += 1 
    End While
    VS2005 me dit que System.DBNull ne peut etre convertie en Date

    et si j'essaye de formater la chaine vide en date
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    While Feuille.Cells&#40;nbrows, 1&#41;.value <> ""
            if String.IsNullOrEmpty&#40;feuille.cells&#40;nbrows,21&#41;.value then 
                        monDataTable.AddmaTableRow&#40;System.Guid.NewGuid, Feuille.Cells&#40;nbrows, 2&#41;.value, Feuille.Cells&#40;nbrows, 3&#41;.value.ToString.Trim, Feuille.Cells&#40;nbrows, 5&#41;.value, Feuille.Cells&#40;nbrows, 7&#41;.value, Feuille.Cells&#40;nbrows, 10&#41;.value, Feuille.Cells&#40;nbrows, 15&#41;.value, Feuille.Cells&#40;nbrows, 18&#41;.value, Feuille.Cells&#40;nbrows, 19&#41;.value, Feuille.Cells&#40;nbrows, 20&#41;.value, Format&#40;Feuille.Cells&#40;nbrows, 21&#41;.value, "dd/MM/yyyy"&#41;, Feuille.Cells&#40;nbrows, 22&#41;.value&#41; 
           else
    monDataTable.AddmaTableRow&#40;System.Guid.NewGuid, Feuille.Cells&#40;nbrows, 2&#41;.value, Feuille.Cells&#40;nbrows, 3&#41;.value.ToString.Trim, Feuille.Cells&#40;nbrows, 5&#41;.value, Feuille.Cells&#40;nbrows, 7&#41;.value, Feuille.Cells&#40;nbrows, 10&#41;.value, Feuille.Cells&#40;nbrows, 15&#41;.value, Feuille.Cells&#40;nbrows, 18&#41;.value, Feuille.Cells&#40;nbrows, 19&#41;.value, Feuille.Cells&#40;nbrows, 20&#41;.value, Feuille.cells&#40;nbrows,21&#41;.value, Feuille.Cells&#40;nbrows, 22&#41;.value&#41;
           end if
           nbrows += 1 
    End While
    il me dit que la conversion de la chaine "" en type Date n'est pas valide

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    j'ai trouvé il faut forcer avec System.Data.SqlTypes.SqlDateTime.Null et non System.DBNull.value

  5. #5
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    et merci d'avoir au moins compenser mon Alzheimer galopant je ne me souvenais plus de cette nouvelle fonctionnalité de 2005
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/10/2007, 22h53
  2. [client/serveur] Quel est format de requêtes Client/BDD ?
    Par sotuxan dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 05/03/2006, 13h52
  3. [ADO.Net][VB.Net] Quel est l'équivalent du RecordSet ?
    Par dinbougre dans le forum Accès aux données
    Réponses: 17
    Dernier message: 23/02/2006, 15h24
  4. Réponses: 7
    Dernier message: 06/04/2005, 20h18
  5. [net][Sockets] Quel est le nombre maximal de threads?
    Par itsmii dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 06/05/2004, 11h48

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