todac
Messages postés15Date d'inscriptionlundi 4 avril 2005StatutMembreDernière intervention28 janvier 2012
-
20 avril 2006 à 13:16
cs_jperre
Messages postés268Date d'inscriptionlundi 9 janvier 2006StatutMembreDernière intervention19 janvier 2017
-
20 avril 2006 à 21:03
Bonjour,
en vue d'eviter des doublons dans une base je voudrai indexer 3 champs dasn Un seul si possible
j ai une piste mais ca ne fonctionne pas
aurriez vous une idée ?
d'avance Merci de votre aide.
Public Function Creation_base(CheminBase As String)
Dim Mabase As Database 'Ajouter "preferences Microsoft DAO Object X Library"
Dim Table As TableDef
Dim Champ As Field 'Déclaration des variables
Dim Idx As Index
On Error GoTo ExisteDeja
'Création de la base de données "Essai.mdb" dans le répertoire de l'application
Set Mabase = DBEngine.CreateDatabase(CheminBase, dbLangGeneral)
Set Table = Mabase.CreateTableDef("Mesure1")
'creation des champs
Table.Fields.Append Table.CreateField("immat", dbText)
cs_jperre
Messages postés268Date d'inscriptionlundi 9 janvier 2006StatutMembreDernière intervention19 janvier 20172 20 avril 2006 à 14:34
Sub Creation_base(CheminBase As String)
Dim MaBase As DAO.Database
Set MaBase=DBEngine(0).CreateDatabase(CheminBase,dbLangGeneral)
MaBase.Execute "CREATE TABLE Mesure1(Immat TEXT(8), DatePc TEXT(10), HeurePc TEXT(8), CONSTRAINT Primarykey PRIMARY KEY(Immat, DatePc, HeurePc));"
MaBase.Close
End Sub
Voilà, en une seule instruction la table est créée avec son index primaire...
cs_jperre
Messages postés268Date d'inscriptionlundi 9 janvier 2006StatutMembreDernière intervention19 janvier 20172 20 avril 2006 à 21:03
Quel est l'intérêt de mettre un champ autoincrementé dans la mesure ou l'index primaire se fait sur les champs Immat, Datesat et Heuresat.
"SELECT * FROM Mesure1;" se classe automatiquement dans l'ordre de l'index primaire. J'ai créé beaucoup d'applications utilisant des bases de données Access, dont certaines étaient très complexes, jamais je n'ai utilisé de champs autoincrement, car en cas de suppression d'enregistrements, on se prépare de beaux petits soucis si plusieurs tables sont liées.
todac
Messages postés15Date d'inscriptionlundi 4 avril 2005StatutMembreDernière intervention28 janvier 2012 20 avril 2006 à 14:17
Merci pour cette reponse rapide,
mais je suis debutant pourrriez vous m inserer les lignes dans l exemple ci dessus ?
j ai des problemes avec les ouvertures et fermetures (Mabase.TableDefs.Append Table) je n arrive pas a comprendre
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
todac
Messages postés15Date d'inscriptionlundi 4 avril 2005StatutMembreDernière intervention28 janvier 2012 20 avril 2006 à 14:42
Merci Beaucoup pour cette simplification
ptite question subsidiaire su je veux ajouter un champ non indexé à cette base ?
un champ vitesse double(10) par exemple
Merci
cs_jperre
Messages postés268Date d'inscriptionlundi 9 janvier 2006StatutMembreDernière intervention19 janvier 20172 20 avril 2006 à 14:52
Il suffit de l'ajouter dans la liste des champs après le nom de la table (nomChamp TypeDeDonnée). Il faut savoir qu'en SQL, les types de données sont un peu différents qu'avec les objets DAO.
Chaîne de 10 caractères =TEXT(10),
Booléen = BIT,
Octet=BYTE,
Entier=SHORT,
Entier long=LONG,
Réel simple=SINGLE,
Réel double=DOUBLE,
Monétaire=CURRENCY,
Date=DATETIME,
Mémo=LONGTEXT,
Binaire=LONGBINARY,...
Celà vient du fait que le SQL est un language avec sa propre syntaxe....
todac
Messages postés15Date d'inscriptionlundi 4 avril 2005StatutMembreDernière intervention28 janvier 2012 20 avril 2006 à 20:34
Encore Merci tout fonctionne parfaitement
il me reste un ptit probleme
Voici ma commande mais AUTOINCREMENT me fait planter execute
le but est d avoir un N° d orde car apres je fais un sql = "Select * From Mesure1 Where 1 ORDER BY Numentree"
Merci
Dim Mabase As DAO.Database
Set Mabase = DBEngine(0).CreateDatabase(CheminBase, dbLangGeneral)
Mabase.Execute "CREATE TABLE Mesure1(Numentree SINGLE AUTOINCREMENT, Machine TEXT(16), Type TEXT(16), Immat TEXT(10), Altitude SINGLE, Latitude TEXT(10), Longitude TEXT(10), Satellite SHORT, Datesat TEXT(8), Heuresat TEXT(8), Azimuth SINGLE, CONSTRAINT Primarykey PRIMARY KEY(Immat, Datesat, Heuresat));"
Mabase.Close