Création d'une table à partir d'une autre table en VB6

Résolu
cs_bezzaz Messages postés 16 Date d'inscription mercredi 17 mai 2006 Statut Membre Dernière intervention 26 janvier 2009 - 23 mai 2007 à 12:54
mqsi Messages postés 111 Date d'inscription mardi 31 octobre 2006 Statut Membre Dernière intervention 28 avril 2010 - 20 juil. 2007 à 13:33
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

cs_jperre Messages postés 268 Date d'inscription lundi 9 janvier 2006 Statut Membre Dernière intervention 19 janvier 2017 2
23 mai 2007 à 13:21
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
3
cs_jperre Messages postés 268 Date d'inscription lundi 9 janvier 2006 Statut Membre Dernière intervention 19 janvier 2017 2
23 mai 2007 à 18:05
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".
3
cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
23 mai 2007 à 14:54
Salut,

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

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
cs_bezzaz Messages postés 16 Date d'inscription mercredi 17 mai 2006 Statut Membre Dernière intervention 26 janvier 2009
23 mai 2007 à 17:10
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mqsi Messages postés 111 Date d'inscription mardi 31 octobre 2006 Statut Membre Dernière intervention 28 avril 2010
20 juil. 2007 à 13:33
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
0