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.NET Discussion :

Ajouter une requête dynamiquement à une BD ACCESS


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de dsolheid
    Inscrit en
    Décembre 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Décembre 2007
    Messages : 141
    Par défaut Ajouter une requête dynamiquement à une BD ACCESS
    Bonjour à tous,

    J'ai un gros soucis ...
    J'ai une application VB.NET qui tourne sur une BD ACCESS 2003.
    Quand j'ajoute des champs ou table à ma DB (dynamiquement), j'utilise une fonction au démarrage de mon application qui appel un ALTER TABLE ... etc

    Je fais ça car mon client ne peut pas me renvoyer la BD ... et je mets à jour uniquement l'Application.

    Jusque là, ok.

    Mais le soucis, c'est que j'ai fait des liens vers des requêtes embarquées dans la BD (embarquées chez moi, mais pas chez le client.)
    Et une fois que le client install l'application, les requêtes ne sont pas dans la BD, et l'application râle.

    SAvez vous comment ajouter une requête dynamiquement à une BD ACCESS ??

    Exemple :
    ADD 'requete_test' = 'SELECT * FROM TEST';


    D'avance, Grand merci,

    Didier.

  2. #2
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    salut,

    de tete, en vba, tu as createquerydef...

    par contre, je ne connais pas de moyen de l'appeler depuis .net...

    Eventuellement, regarde si il est possible d'appeler createquerydef par automation, ou en ajoutant une reference a dao...

    Ceci dit, je pense que le probleme est plus au niveau du process qu'autre chose...

    Si ton client ne veut pas t'envoyer la base, livre lui un listing des requetes a ajouter, ou mets-les directement dans le code (je conseillerais meme la deuxieme solution, ca permettrait d'eviter les boulettes...)

    Dans le pire des cas, livre lui une db access avec un bout de script vba qui lance un formulaire, lui demande l'adresse de sa base a lui, la sauvegarde, et copie tes requetes dedans..

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  3. #3
    Membre confirmé Avatar de dsolheid
    Inscrit en
    Décembre 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Décembre 2007
    Messages : 141
    Par défaut
    Citation Envoyé par pvialatte Voir le message
    salut,

    de tete, en vba, tu as createquerydef...

    par contre, je ne connais pas de moyen de l'appeler depuis .net...

    Eventuellement, regarde si il est possible d'appeler createquerydef par automation, ou en ajoutant une reference a dao...

    Ceci dit, je pense que le probleme est plus au niveau du process qu'autre chose...

    Si ton client ne veut pas t'envoyer la base, livre lui un listing des requetes a ajouter, ou mets-les directement dans le code (je conseillerais meme la deuxieme solution, ca permettrait d'eviter les boulettes...)

    Dans le pire des cas, livre lui une db access avec un bout de script vba qui lance un formulaire, lui demande l'adresse de sa base a lui, la sauvegarde, et copie tes requetes dedans..

    Bonjour,

    Je reviens sur ce sujet ... car je n'ai jamais trouvé de solution ...


    Quelqu'un à une idée ?

  4. #4
    Membre confirmé Avatar de dsolheid
    Inscrit en
    Décembre 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Décembre 2007
    Messages : 141
    Par défaut
    JE viens de trouver !!!
    )

    Il suffit d'exécuter une requête de type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Utilities.ExecuteNonQuery(conn, "CREATE VIEW test AS SELECT * FROM Table_News;")
    Et la requête sera ajoutée à la BD ACCESS.


  5. #5
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Par défaut
    Citation Envoyé par dsolheid Voir le message
    Je fais ça car mon client ne peut pas me renvoyer la BD ... et je mets à jour uniquement l'Application.

    Mais le soucis, c'est que j'ai fait des liens vers des requêtes embarquées dans la BD (embarquées chez moi, mais pas chez le client.)
    Et une fois que le client install l'application, les requêtes ne sont pas dans la BD, et l'application râle.
    Si tu n'as pas accès à la base de données, pourquoi vouloir ajouter ces requêtes dans le fichier Access ? Il suffit juste de stocker les requêtes dans ton application et de les exécuter comme tu veux.

  6. #6
    Membre confirmé Avatar de dsolheid
    Inscrit en
    Décembre 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Décembre 2007
    Messages : 141
    Par défaut
    Citation Envoyé par Skalp Voir le message
    Si tu n'as pas accès à la base de données, pourquoi vouloir ajouter ces requêtes dans le fichier Access ? Il suffit juste de stocker les requêtes dans ton application et de les exécuter comme tu veux.
    Oui, mais derrière je voulais absolument utiliser =>

    Me.XXX_DataSet.Requete_Table_YYY.WriteXml(....)

    Ca, avoir accès à une requete prédéfinie dans ma DB ..

    Car WriteXml me permet en une ligne de générer une fiche XML avec mes données ..
    Chose que j'ai difficilement trouvé avec une requête stockée dans mon applic.

  7. #7
    Membre confirmé Avatar de dsolheid
    Inscrit en
    Décembre 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Décembre 2007
    Messages : 141
    Par défaut
    Citation Envoyé par Skalp Voir le message
    Si tu n'as pas accès à la base de données, pourquoi vouloir ajouter ces requêtes dans le fichier Access ? Il suffit juste de stocker les requêtes dans ton application et de les exécuter comme tu veux.
    Mais le vrai problème, à la base ..

    C'est que j'ai une table avec les champs =>
    ID, Date_creation, Title, Texte, Image

    Et que je dois extraire ces données vers une fiche XML.

    WriteXML me convient très bien, .. mais alors je dois avoir une requête, car Date_creation doit être formatée d'une certaine façon dans la fiche XML.
    DD-MM-AA

    Et ce n'est pas le cas par défaut ...
    Du coup, je passe par une requête (embarqué dans la BD)...

    Mais vu que le client, ne peut pas me redonner sa BD, je dois trouver le moyen d'ajouter une requête dans la BD ...

    Si je connaissait un autre moyen de réaliser une requête similaire à partir de l'application et générer de l'XML facilement derrière ... je serais RAVI

    vous n'avez pas une idée ?

    Car le CREATE VIEW ne fonctionne pas ... (il marche avec des requetes très basiques, mais pas pour moi ...)

    Merci

  8. #8
    Membre confirmé Avatar de dsolheid
    Inscrit en
    Décembre 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Décembre 2007
    Messages : 141
    Par défaut
    Voilà une solution ...

    Résultat de la Requête exécutée sauvé dans un fichier XML :

    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
        Public Shared Sub ExecuteQueryToXML(ByVal connectionString As String, ByVal strSQL As String, ByVal  As String, ByVal tableName As String)
     
            Using connection As New System.Data.OleDb.OleDbConnection(connectionString)
     
                Dim command As New System.Data.OleDb.OleDbCommand(strSQL)
     
                ' Set the Connection to the new OleDbConnection.
                command.Connection = connection
     
                Dim ds As DataSet = New DataSet()
     
                ' Open the connection and execute the command.
                Try
                    connection.Open()
                     ds.Load(command.ExecuteReader(), System.Data.LoadOption.OverwriteChanges, tableName)
                    ds.WriteXml(xmlFilename)
     
                Catch ex As Exception
                    Console.WriteLine(ex.Message)
                End Try
     
                ds.Dispose()
                ' The connection is automatically closed when the
                ' code exits the Using block.
            End Using
        End Sub

Discussions similaires

  1. Ajouter une colonne dans une table via une requête
    Par Alien_psy dans le forum Requêtes et SQL.
    Réponses: 25
    Dernier message: 23/02/2013, 05h24
  2. Ajouter une requête dynamiquement à une BD ACCESS
    Par dsolheid dans le forum VBA Access
    Réponses: 5
    Dernier message: 19/10/2008, 15h05
  3. Réponses: 1
    Dernier message: 10/02/2007, 09h39
  4. Requête sur une requête dynamique...
    Par kluh dans le forum Access
    Réponses: 4
    Dernier message: 17/11/2005, 19h59
  5. Réponses: 5
    Dernier message: 07/11/2005, 15h38

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