Création d'une table à partir d'une autre table en VB6 [Résolu]

Signaler
Messages postés
16
Date d'inscription
mercredi 17 mai 2006
Statut
Membre
Dernière intervention
26 janvier 2009
-
mqsi
Messages postés
111
Date d'inscription
mardi 31 octobre 2006
Statut
Membre
Dernière intervention
28 avril 2010
-
Bonjour,

J'ai cherché une petite heure sur les forums VB mais je ne trouve pas mon bonheur.

La situation est la suivante. Il y a une BD "gestclinique", qui est liée avec le programme VB par un ADODB.

Le but, c'est de créer une table "archive" à partir de la table "patient", dont je vais stocker tout les patients du 3 années précédente , et supprimer ses patients de la table "patient".( Le tout en VB6 )

Bref, help :)

Merci

5 réponses

Messages postés
268
Date d'inscription
lundi 9 janvier 2006
Statut
Membre
Dernière intervention
19 janvier 2017
2
Pour créer une nouvelle table, il faut utiliser un objet command.
Auparavant, bien sûr, il faut avoir créé une table "archive" comportant exactement la même structure que la table "patient".

Exemple de code :

Sub CreateArchive(Conn As ADODB.Connection)
Dim sSQL As String
Dim Cmd As ADODB.Command
Set Cmd=New ADODB.Command
Cmd.ActiveConnection=Conn
sSQL="INSERT INTO archive SELECT * FROM patient;"
Cmd.Execute sSQL
sSQL="DELETE * FROM patient;"
Cmd.Execute sSQL
Set Cmd=Nothing
End Sub
Messages postés
268
Date d'inscription
lundi 9 janvier 2006
Statut
Membre
Dernière intervention
19 janvier 2017
2
Pour créer une table, c'est très facile, il faut utiliser l'objet command et bien entendu connaître le language SQL

Exemple :

Sub CreateArchive(Conn As ADODB.Connection)
Dim sSQL As String
Dim Cmd As ADODB.Command
Set Cmd=New ADODB.Command
Cmd.ActiveConnection=Conn
sSQL="CREATE TABLE archive(NomChamp1 TypeChamp1, NomChamp2 TypeChamp2,..., CONSTRAINT NomIndex PRIMARY KEY(Champ1Index, Champ2Index,...));"
Cmd.Execute sSQL
Set Cmd=Nothing
End Sub

Les Types de champs sont :
TEXT(5) pour les champs de texte de longueur inférieure ou égale à 64 caractères avec la longueur indiquée entre parenthèses
BIT pour les champs booléens,
BYTE pour les champs de type octet,
SHORT pour les champs de type entier court,
LONG pour les champs de typs entier long,
SINGLE pour les champs de type réel simple
DOUBLE pour les champs de type réel double,
CURRENCY pour les champs monétaire,
LONGTEXT pour les champs de type mémo (supérieurs à 64 caractères et jusqu'à la taille maximum de la table),
LONGBINARY pour les champs binaires

D'autre part, cette procédure ne doit être utilisée qu'une seule fois, puisque les fois suivantes, les données de la table "patient" sont ajoutées à la tablr "archive".
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
Salut,

Regarde aussi ici, il y a des truc sur ADO qui sont sympa...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
16
Date d'inscription
mercredi 17 mai 2006
Statut
Membre
Dernière intervention
26 janvier 2009

Salut,

Merci à 'jperre ton code marche très bien, mais ce que j’ai voulu moi exactement c’est que la table « archive » soit créé automatiquement (par un code), sinon votre solution, ca fonctionne parfaitement. C'est cool ! Merci


Et merci aussi à 'Exploreur
Messages postés
111
Date d'inscription
mardi 31 octobre 2006
Statut
Membre
Dernière intervention
28 avril 2010

est ce que vous pouvez  m'aider et voir pourquoi ce code ne marche pas ?

Dim Conn As ADODB.Command
Dim sSQL AsString
Dim Cmd As ADODB.Command
'Conn.Open "provider=vfpoledb;data source=C:\;"
Set Cmd = New ADODB.Command
Cmd.ActiveConnection = Conn
sSQL = " INSERT INTO c:\Fichier1.dbf  SELECT * FROM  c:\fichier2.dbf "
Cmd.Execute sSQL
sSQL = "DELETE * FROM c:\fichier2 "
Cmd.Execute sSQL
Set Cmd = Nothing