Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Clé primaire [ Base de données / ADO.NET ] (cybercorp)

samedi 20 octobre 2007 à 13:00:22 | Clé primaire

cybercorp

Bonjour
J'ai une table qui me permet d'importer des données d'une feuile excel. Lors de chaque importation je dois vider ma table avant de la récupération(environ 3400 lignes)
Mon problème c'est que la clé primaire ne se réinitialise pas et que j'ai maintenant des numéros a 220 000 a force de faire des importations.
J'ai essayé de compacté ma table, mais ça ne marche pas.


Celui qui ajoute de nouvelles connaissances aux anciennes est le véritable professeur.(Confucius)

samedi 20 octobre 2007 à 13:33:58 | Re : Clé primaire

Exploreur

Membre Club
Salut,

Il y aurais peut-être une solution, c'est d'exporter tes donner de ta table existante dans une nouvelle table, ainsi, tu auras le numéro auto en chrono à chaque fois... 

A+
Exploreur

 Linux a un noyau, Windows un pépin

 


samedi 20 octobre 2007 à 18:16:09 | Re : Clé primaire

JPGVB

Bonjour, microsoft.support dit:


Lorsque vous développez une application, et que vous créez des
enregistrements bidons pour tester celle-ci, les tables contenant un
champ compteur incrémentent celui-ci au fur et à mesure de la saisie de
nouveaux enregistrements.
Ainsi même si vous supprimez vos 20 enregistrements de test, un nouvel
enregistrement aura comme valeur dans le champ compteur 21.

Pour réinitialiser ce champ, vous devez supprimer tous les
enregistrements de la table sans exceptions. Fermez ensuite votre base de
données. Compactez alors la base de données en sélectionnant le menu
Fichier puis la commande Compacter une base de données. Vous pouvez
maintenant réouvrir votre base et la table précédente. Créez un nouvel
enregistrement, le champ compteur démarre bien à 1.


REMARQUES :

Lorsque vous compactez votre base de données Access vous demande de
renommer votre base. Aussi avant d'effectuer la manipulation de
compactage, basculez sous le gestionnaire de fichier et renommez votre
base en BASETEMP.MDB. Vous n'avez plus alors qu'à redonner son nom
original lors de l'opération de compactage.

Cette manipulation permet de réinitialiser le champ compteur, uniquement
si la table ne contient pas d'enregistrements. Dans le cas contraire,
vous devez supprimer le champ compteur (si ce champ constitue la clé
primaire vous devez préalablement supprimer la clé primaire) puis le
recréer ( et éventuellement recréer la clé primaire) cf FT N° 463204 (http://support.microsoft.com/kb/463204/FR/).
Mais attention, ceci n'est réalisable que si il n'y a aucunne relation
basée sur ce champ, sinon utilisez un compteur de type personnalisé cd FT



samedi 20 octobre 2007 à 19:26:44 | Re : Clé primaire

pluplu

Le plus simple c'est de re-créer une table temporaire à chaque fois, et l'effacer en fin d'utilisation. Pour cela voir du coté des objets ADOX .
Ajouter au projet la référence "Microsoft ADO Ext. 2.8 for DDL and security" (msADOX.dll)

Pour créer une table temporaire
 
'Ceci crée une table et ajoute un champ en clé primaire et auto-incrément, un champ de type Integer, et un autre champ de type String.


Sub createTable

Dim cat as ADOX.catalog
Dim tbl as new ADOX.Table
Dim i as single

   Set cat = New ADOX.Catalog
   cat.create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.path & "\MyDB.mdb"

   With tbl
         .Name = "NomdemaTable"
         Set .ParentCatalog = cat
         .Columns.Append "MonChampID", adInteger
         .Columns("MonChampID").Properties("AutoIncrement") = True
         .Columns.Append "MonChamp1", adInteger, 20
         .Columns.Append "MonChamp2", adVarWChar, 50
   End With
   cat.Tables.Append tbl
   tbl.Keys.Append "ClePrimaire", adKeyPrimary, ""MonChampID"

End Sub
  
'Cette fonction efface la table "TableName" de la base de donnée

Function DeleteTable(TableName As String) As Boolean

    On Error GoTo DeleteTable_Error
   
    Set cn = New ADODB.Connection
    cn.CursorLocation = adUseClient
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.path & "\MyDB.mdb"

    Set cat = New ADOX.Catalog
    Set cat.ActiveConnection = cn
    DeleteTable = True
    cat.Tables.Delete TableName
    On Error GoTo 0
    Set cat = Nothing
    cn.Close
    Set cn = Nothing
    Exit Function

DeleteTable_Error:
    DeleteTable = False
    Resume Next
    Set cat = Nothing
    cn.Close
    Set cn = Nothing

End Function
   



Pascal Laurençon


samedi 20 octobre 2007 à 22:23:40 | Re : Clé primaire

cybercorp

Réponse acceptée !
Merci pour vos réponses.
Mon problème venait d'une erreur de code

Pour vider ma table j'utilise une requete nommée DeleteCg créée avec le générateur de requêtes
DELETE FROM TCNat WHERE (Nom <> "'')

StrFilePath =

My.Application.Info.DirectoryPath
Me.TCNatTableAdapter.DeleteCg()
CompactAndRepair(StrFilePath & "\CG.mdb", StrFilePath)CompactAndRepair est une fonction que j'ai trouvé il y a quelques temps. Je le remet ici car ça peut toujours servir.

Public

Function CompactAndRepair(ByVal DbPath AsString, ByVal TmpFolder AsString) AsBoolean
Dim Oparams AsObject
Dim OJro AsObject = Activator.CreateInstance(Type.GetTypeFromProgID("Jro.JetEngine"))
Dim StrLblPath AsString
IfNot File.Exists(DbPath) Then
MessageBox.Show("Base de donnée non trouvée.", "Administrateur", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
ReturnFalse
EndIf

StrLblPath = Mid(DbPath, 1, Len(DbPath) - 3) &

"lbd"
If File.Exists(StrLblPath) Then
MessageBox.Show("La base de données est déjà ouverte", "Administrateur", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
ReturnFalse
EndIf
Try

Oparams =
NewObject() {"Provider=Microsoft.jet.OLEDB.4.0;Data Source=" & DbPath & ";Jet OLEDB:Engine Type=5", "Provider=Microsoft.jet.OLEDB.4.0;Data Source=" & TmpFolder & "~Tempdb.mbd;Jet OLEDB:Engine Type=5"}

OJro.GetType().InvokeMember(
"CompactDatabase", Reflection.BindingFlags.InvokeMethod, Nothing, OJro, Oparams)
File.Delete(DbPath)
File.Move(TmpFolder &
"~Tempdb.mbd", DbPath)
Runtime.InteropServices.Marshal.ReleaseComObject(OJro)
OJro =
Nothing
ReturnTrue
Catch ex As Exception
ReturnFalse
EndTry
EndFunction

Celui qui ajoute de nouvelles connaissances aux anciennes est le véritable professeur.(Confucius)



Cette discussion est classé dans : table, clé, primaire


Répondre à ce message

Sujets en rapport avec ce message

Clé primaire [ par anne ] J'accède à une base de données grâce à ADOX. J'aimerais connaître les noms des champs qui sont clés primaires de la table. J'arrive à déterminer la li Recuperer l'index (clé primaire) [ par kalver ] Dans mon application, je souhaite récuperer l'index (clé primaire) d'une table (avec relations !) et l'écrire dans la seconde afin de pouvoir retrouve créer une clé primaire sur 3 champs [ par tikki_the_mad_cat ] Bonjour à tous,voici mon souci,j'ai une table OPPRE, issue d'un TA binaire dont un des TE qui lui est relié est défini par une clé double (un num et u Clé primaire après import Table [ par mike la menace ] Salut, En cliquant sur un bouton de mon projet en access, je charge une table à partir d'un document excel. Je voudrais qu'un des champs de cette tabl Clé primaire dans une table [ par nicolasheurtevin ] Bonjour, Dans mon appli, j'accède à une base de données via ADODB, je liste les tables ainsi que les champs. J'aimerais savoir pour un champ donné, s Creer une table avec clé primaire en SQL [ par daddycool ] Bonjour,je crée une table avec une commande SQL comme ceci; dbs.Execute "CREATE TABLE supv (num Integer , superviseur TEXT (15)) ;" Je veux que num s Attribuer une clé primaire à une colonne d'une table Access en code (vb.net).. ?? [ par TrafMaxime ] Salut tout le monde, voilà tout est dans le titre :encore une fois je cherche à affecter à la colonne C1 d'une table T1 d'une base Access, la propriét Recuperer clé primaire [ par Talere ] Bonjour,J'ai une instrcution SQL qui m'insère une ligne dans une de mes tables Access ("INSERT INTO Ma_Table(Mon_Champ) VALUES (ma_valeurvaleur)"). J' Clé primaire [ par SEB73460 ] Bonjour,je debute avec vb.net, pourriez-vouz m'indiquer à quoi sert la clé primaire dans une table access ?J'ai crée une base de donnée ado.net et je


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,484 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.