none
Requête SQL Creation table From ACCESS 2003 to ACCESS 2007 : Format BD non reconnu RRS feed

  • Question

  • Bonjour,

    Dans une BD Access 2003 j'ai une requête de création de table vers une BD Access 2007.

    SELECT [Rq Sur Affaire Facturée].NuméroAFF INTO Test IN 'Z:\PROFAL Serveur\SRVBD\HISTORIQUE.accdb'
    FROM [Rq Sur Affaire Facturée];

    Si j'exécute cette requête depuis ACCESS 2007 en ouvrant la BD 2003 (.mdb), c'est OK.

    Par contre, par programmation en VB.NET sous VS 2010, et avec un objet OleDbCommand :

    ...

    If CNN.State <> ConnectionState.Open Then
       CNN.Open()
    End If
    Dim CDE = New OleDbCommand
    CDE.CommandType = CommandType.Text
    CDE.Connection = CNN (Une connection Jet 4.0 sur la BD (2003) contenant les données source)
    CDE.CommandText = SELECT [Rq Sur Affaire Facturée].* INTO [Annee courante] IN 'Z:\PROFAL Serveur\SRVBD\HISTORIQUE.accdb' FROM [Rq Sur Affaire Facturée];
    CDE.ExecuteNonQuery()
    CNN.Close()

    J'ai une erreur : Format de base de données non reconnu.

    Je comprends bien, qu'il y a une différence de format dans la BD source et la BD Destination, mais je ne sais pas comment contourner le problème.

    Or, ACCESS y parvient.

    Quelqu'un a-t'il une idée ou connait ce problème ?

    Merci de votre aide.

    Jean-Noël FALQUET

    • Type modifié Aurel Bera jeudi 8 novembre 2012 09:49 Question
    mercredi 7 novembre 2012 09:25

Réponses

Toutes les réponses

  • Bonjour

    Si j'ai bien compris, le comportement c’est bien logique :

    Vous pouvez utiliser sans aucun problème une BD Access 2003 avec Access 2007.

    Par contre, quand vous essayez à utiliser un fichier Access 2007 à partir d’un fichier 2003 vous avez le message d’erreur.

    La solution logique (et pas testée) est d’ouvrir le fichier Access 2003 en utilisant les pilotes pour Access 2007 (donc changer la chaine de connexion).  

    Cordialement


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    • Marqué comme réponse Florin Ciuca jeudi 8 novembre 2012 10:01
    jeudi 8 novembre 2012 09:12
  • Bonjour,

    Vous avez parfaitement compris le comportement, et votre solution a résolu le problème.

    C'était tout simple.

    Si je comprends bien, il faut toujours utiliser le dernier pilote dont on dispose et qui assure finalement la compatibilité ascendante.

    Merci beaucoup en tout cas et bonne journée.

    • Marqué comme réponse JN Falquet jeudi 8 novembre 2012 09:54
    jeudi 8 novembre 2012 09:43
  • Bonjour,

    Je ne fais presque plus de requête, j'utilise un binding par table que je charge avec un dasaset, la fonction filter du binding apporte beaucoup.

    Voici un exemple de construction:

        cmdclient = NewSqlCommand("SELECT * FROM Clien")         Connegesite.Open()         cmdclient.Connection = Connegesite         Adaptr.SelectCommand = cmdclient         Adaptr.Fill(datset, "Clien")         bindingclient.DataSource = datset         bindingclient.DataMember = "Clien"         bindingclient.MoveFirst()

    voici un exemple de tri

      

    Dim Eee AsString = "monchamp = '" & TextBox1.Text & "' AND monchamp2= '" & TextBox2.Text & "'"         bindingclient.Filter = Eee

    en chargeant un binding par table tu peut croiser des tables à partir du retour d'un champ.

    c'est beaucoup plus simple

    Cordialement

    Jacky

     

     


    Jbenon

    lundi 7 janvier 2013 14:47