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 :

Migration de Excel vers Sql Server 2000


Sujet :

Accès aux données

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Migration de Excel vers Sql Server 2000
    salut a tous j essaye depuis 3 jours desesperemment a transporter les donnes d une feuille excel dans une table deja excitante dans sql 2000.ma feuille excel a 5 champ et ma table sql en a 9 mais les champ de ma feuille excel ont les memes noms que ma table sql.je suis confronter a 2 poblemes:
    1.j ai des colonnes avec des dates dans ma feuille excel que lors de l insersion sont considerer coe des valeurs doubles et j ai cette erreur "valeur de type double ne peuvent pas etre converti en date"
    2.lorsque je ne tiens pas compte de ses valeurs de dates c est a dire ke lors mon select je ne selectionne ke les valeur integer elles sont bien et bien inserer dans ma table sql mais pas dans les colonnes respestives,
    voila le code: merci de bien vouloir m aider je suia desesperee.

    Private Sub B_OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles B_OK.Click

    Dim oldbconstr As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source= c:\Kopie von Test-DWH-DB-2.xls;Extended Properties=Excel 8.0;"

    OleConnection = New OleDb.OleDbConnection(oldbconstr)
    Dim str As String = String.Format("select * from [arbeitstunden$] ", "T_Excel")
    olecommand = New OleDb.OleDbCommand(str, OleConnection)

    OleConnection.Open()

    Dim worksheets As DataTable = OleConnection.GetSchema("tables")



    ' create dbdatareader to data worksheet und die werte von Excel TABELLE ZU HABEN UND DANN ZU CONVERTIEREN
    Dim objdatareader As DbDataReader = olecommand.ExecuteReader()


    objadapter = New OleDb.OleDbDataAdapter(str, OleConnection)





    Dim ds As New DataSet


    objadapter.Fill(ds, "T_EXCEL")



    'sql sever connection string

    Dim srtConnection As SqlConnection

    srtConnection = New SqlConnection("Data Source=pc147;Initial Catalog=DWH_1;Integrated Security=True")


    srtConnection.Open()

    'bulk copy to sql server
    Dim bulkcopy As SqlBulkCopy = New SqlBulkCopy(srtConnection)
    bulkcopy.DestinationTableName = "T_Abrechnung"
    bulkcopy.WriteToServer(objdatareader)

    OleConnection.Close()

    srtConnection.Close()

    End Sub
    l erreur survient en effet au niveau de bulkcopy.WriteToServer(objdatareader)
    c est la qu on me dit que les valeurs doubles ne peuvent pas etre considerer comme des datatime

  2. #2
    Membre régulier
    Inscrit en
    Juin 2003
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 82
    Points : 92
    Points
    92
    Par défaut
    Bonjour,


    Je pense qu'il serait plus simple pour toi de faire un DTS qui importe tes données de ton fichiers Excel vers ta base de données.

    A partir d'Entreprise Manager.
    Click droit sur ta base de données -> importer des données.

    @+

  3. #3
    Expert éminent
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Points : 9 634
    Points
    9 634
    Par défaut
    Te casses pas la tête, soit tu importes comme indiqué, soit tu fais des copier/coller dans ton fichier excel pour que ca ressemble à ta table.

    Puis tu sélectionnes toute la page (clic dans le coin supérieur gauche de la feuille), copier et coller dans la table dans l'enterprise manager

    Les champs vides seront considérés comme "null".

    Didier Danse

    Most Valuable Profesionnal SharePoint
    Microsoft Certified Application Developer
    Mes articles sur developpez.com
    Mon site perso


  4. #4
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 9
    Points : 7
    Points
    7
    Par défaut mais le probleme
    en fait je ne peux pas le faire avec DTS car j importe les donnees excel plusieurs fois et ca a partir d un formulaire,chaque fois qu un utilisateur ouvre ce formulaire il doit etre capable d importer cette feuille excell vers sql

  5. #5
    Membre régulier
    Inscrit en
    Juin 2003
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 82
    Points : 92
    Points
    92
    Par défaut
    J'ai trouvé deux fonctions sur ce site qui permet de convertir les dates Excel au format SQL datetime.

    http://blogs.msdn.com/eric_carter/ar...14/214713.aspx

    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
     
            object ConvertDateToExcelDate(DateTime date)
            {
                if (date1904)
                {
                    if (date >= january1st1904)
                        return date - date1904adjustment;
                    else
                        return date.ToString(DateFormat, DateFormatProvider);
                }
                if (date >= march1st1900)
                    return date;
                if (date < march1st1900 && date > december31st1899)
                    return date - before1stMarchAdjustment;
                return date.ToString(DateFormat, DateFormatProvider);
            }
     
            DateTime ConvertExcelDateToDate(object excelDate)
            {
                DateTime date = (DateTime)excelDate;
                if (Date1904)
                    return date + date1904adjustment;
                if (date < march1st1900)
                    return date + before1stMarchAdjustment;
                return date;
            }

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/09/2007, 16h37
  2. Migration vers SQL Server 2000
    Par etoile_de_vie dans le forum SharePoint
    Réponses: 12
    Dernier message: 02/08/2007, 10h36
  3. Réponses: 4
    Dernier message: 16/04/2007, 09h54
  4. Migration SQL Server 6.5 vers SQL Server 2000
    Par Douglas dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 27/10/2005, 11h44
  5. [debutan] migration de données Oracle vers SQL SERVER 2000
    Par Mil00se dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 17/08/2005, 17h44

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