cs_bezzaz
Messages postés16Date d'inscriptionmercredi 17 mai 2006StatutMembreDernière intervention26 janvier 2009
-
23 mai 2007 à 12:54
mqsi
Messages postés111Date d'inscriptionmardi 31 octobre 2006StatutMembreDernière intervention28 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 )
cs_jperre
Messages postés268Date d'inscriptionlundi 9 janvier 2006StatutMembreDernière intervention19 janvier 20172 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
cs_jperre
Messages postés268Date d'inscriptionlundi 9 janvier 2006StatutMembreDernière intervention19 janvier 20172 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".
cs_bezzaz
Messages postés16Date d'inscriptionmercredi 17 mai 2006StatutMembreDernière intervention26 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
mqsi
Messages postés111Date d'inscriptionmardi 31 octobre 2006StatutMembreDernière intervention28 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