Requête création de table avec une connexion ADODB
cs_DATA1
Messages postés3Date d'inscriptionmardi 8 juillet 2003StatutMembreDernière intervention30 mai 2007
-
29 mai 2007 à 17:53
cs_DATA1
Messages postés3Date d'inscriptionmardi 8 juillet 2003StatutMembreDernière intervention30 mai 2007
-
30 mai 2007 à 11:42
Bonjour,
Voilà mon problème : je souhaite créer une connexion (ADODB) entre Visual Basic 6 et 1 table Fox Pro pour exécuter 1 requête qui créera une nouvelle table Fox Pro. Ma requête à l'air de bien s'exécuter mais il n'y a pas de Nouvelle table de créée, je ne comprends pas pourquoi.
Voici mon code :
Dim ADODB_Connec As New ADODB.Connection
Dim ADODB_Command As New ADODB.Command
Dim ADODB_Record As New ADODB.Recordset
Dim Texte_SQL as string
ADODB_Connec.Open "Provider=vfpoledb;Data Source=" + "C:\tmp\Table_client.dbf"
ADODB_Connec.Execute "SET NULL OFF"
'Ci dessous ma requeteTexte_SQL "select * into table C:\tmp\Nouvelle_Table_client.dbf from " + "C:\tmp\Table_client.dbf" + " where civilite 'M'"
ADODB_Connec.Execute ( Texte_SQL )
ADODB_Connec.Close
Merci d'avance pour votre aide
A voir également:
Requête création de table avec une connexion ADODB
cs_Nicko11
Messages postés1141Date d'inscriptionmercredi 7 mars 2007StatutMembreDernière intervention19 septembre 20073 29 mai 2007 à 19:28
Salut,
Je comprend pas l'utilisation de l'instruction SQL Select si tu veux faire une création de table.
Il existe une instruction CREATE TABLE qui serait bien plus appropriée. J'en ai pas une valide sur moi, mais si tu n'as pas résolu ton pb deman, je te la donnerai.
Aussi, j'ai pu remarqué sur Access, que si je reste sur l'onglet des tables, je ne vois pas ma nouvelle table, il faut que je rafraichisse en me mettant dans un autre onglet (modules, macros ou formulaire etc ...) et que je reviennes dessus.
Bien sur cela n'est que visuel. La table est bien reconnu des sa creation par VB.
cs_Exploreur
Messages postés4821Date d'inscriptionlundi 11 novembre 2002StatutMembreDernière intervention15 novembre 201615 29 mai 2007 à 19:46
Salut Nicko,
Tu as raison, mais je pense qu'il veut créer une table par rapport à une clause Where, donc copies de données vers une table qu'il va créer...
Regarde l'aide sur Select...Into :
Crée une requête de création de table.
Syntaxe
SELECT field1[, field2[, ...]] INTO newtable
[IN externaldatabase]
FROM source
L'instruction SELECT...INTO comprend les éléments suivants :
Élément Description
field1, field2 Noms des champs à copier dans la nouvelle table.
newtable Nom de la table à créer. Ce nom doit respecter les conventions d'appellation standard. Si newtable est identique au nom d'une table existante, une erreur récupérable se produit.
externaldatabase Chemin d’accès d'une base de données externe. Pour obtenir une description du chemin, examinez la clause IN.
source Nom de la table dans laquelle les enregistrements sont sélectionnés. Il peut s'agir d'une ou de plusieurs tables, ou encore d'une requête.
Remarques
Vous pouvez utiliser les requêtes de création de tables pour archiver les enregistrements, faire des copies de sauvegarde des tables, ou pour faire des copies à exporter dans une autre base de données ou à utiliser pour produire des états concernant des données sur une période déterminée. Par exemple, vous pouvez produire un état Ventes Mensuelles par Région en exécutant la même requête de création de table chaque mois.
Notes
· Vous souhaiterez peut-être définir une clé primaire pour la nouvelle table. Lorsque vous créez la table, les champs de la nouvelle table héritent du type de données et de la taille de champ de chaque champ présent dans les tables sous-jacentes de la requête. Aucune autre propriété de champ ou de table n'est transférée.
· Pour ajouter des données à une table existante, utilisez l'instruction INSERT INTO au lieu de créer une requête Ajout.
· Pour savoir quels enregistrements seront sélectionnés avant d'exécuter la requête de création de table, lancez d'abord une requête Sélection avec les mêmes critères de sélection puis examinez les résultats obtenus.
cs_DATA1
Messages postés3Date d'inscriptionmardi 8 juillet 2003StatutMembreDernière intervention30 mai 2007 30 mai 2007 à 10:56
Bonjour,
Merci de votre aide, mon problème est en parti résolu.
L’instruction "créate Table" marche bien , mais je n'ai aucune table de créée avec :
"Select Champ1, Champ2
Into
table Newtable from Table where Champ1 ='M'"
Le problème vient peut-être que je ne travail pas avec Accès. En effet, j'attaque 1 Table Visual Fox Pro qui est à la racine d'un répertoire. Cette table Visual Fox Pro n'est pas une base de données.
Pour faire tourner mon instruction Select je dois mettre "
Into
table ", il faut que je rajoute "Table" après le « Into » sinon il n'en veut pas. Cela vient peut-être d'une spécificité de Fox Pro.
Je ne comprends pas pourquoi l'intruction "Create Table" marche alors que le "Into Table" ne marche pas.
Si vous avez une idée
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_DATA1
Messages postés3Date d'inscriptionmardi 8 juillet 2003StatutMembreDernière intervention30 mai 2007 30 mai 2007 à 11:42
Merci de ton aide Nicko,
Effectivement si je fais en 2 requêtes d'abord le "Create" puis "Insert" avec ma close "Where" sa marche<?xml:namespace prefix v ns "urn:schemas-microsoft-com:vml" /??><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"></v:shapetype>.
Si je ne trouve pas le moyen de créer une nouvelle table avec un "Select ... Into Table NewTable From ..." je ferai comme ci dessus. Mais cela ne m'arrange pas car je suis amené à travailler avec des Tables qui ont 100 ou 200 champs ! Et créer 1 nouvelle table identique avec autant de champ en dynamique ca ne va pas être simple.
Sinon saurais-tu pourquoi "Select ... Into Table NewTable From ..." ne marche pas ?<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>