begin process at 2012 02 15 02:54:29
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Base de données

 > 

SQL

 > 

Comment savoir si un enrgistrement existe dans une table Access


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Comment savoir si un enrgistrement existe dans une table Access

jeudi 12 février 2009 à 09:21:44 | Comment savoir si un enrgistrement existe dans une table Access

Benythefrog

Bonjour a tous et a toutes,amis developpeurs...

Je suis ici pour essayer de resoudre un probleme grace a votre aide et j'espere qu'elle sera benefique(je n'en doutte pas bien au contraire)
Je souhaiterai executer une requette qui me permet de savoir si un enregistrement existe dans ma table
J'ai une table TableTrajet dans laquelle j'ajoute des elements
Cependant je voudrai verifier s'il n'existe pasdans la base...
Ma requette est crée
Select ...from...
Je voudrai savoir comment faire pour verifier si le resultat de ma requette existe
s'il existe alors je passe a l'enregistrement suivant
S'il n'existe pas alors je l'ajoute grace a ma requete d'insertion

Merci d'avance
Benoit
jeudi 12 février 2009 à 09:44:20 | Re : Comment savoir si un enrgistrement existe dans une table Access

Exploreur

Membre Club
Salut,

Tu utilises donc un RecordSet alors....Si oui, ta requête va "envoyer" à ton recordset le résultat, si ton recordset est "vide" alors pas de doublon, si le contraire alors tu as le même "référence" dans ta table....Tu n'as pas besoin de faire une boucle si tu fais une requête du genre :

Select * From Tatable Where TonChamp = "Ta_Recherche"
ou
Select TonChamp From Tatable Where TonChamp = "Ta_Recherche"



A+
Exploreur

 Linux a un noyau, Windows un pépin
    ** http://exploreur1.labrute.fr **

jeudi 12 février 2009 à 09:49:49 | Re : Comment savoir si un enrgistrement existe dans une table Access

Benythefrog

Bonjur exploreur
Je t'envoi mon code
Je pence que tu comprendra mieu mon probleme
Je veut verifier que lorsque j'ajoute avec ma requette insert , il n'y ai pas le meme enregistrement...
J'espere etre claire
Pour plus de precision demande moi y'a pas de soucis...

__________________________________________________________

Dim MaBd As DAO.Database
Dim MaTable As DAO.Recordset
Dim req As String
Dim Req2 As String
Dim Dat As String
Dim HeureDépart As String
Dim HeureArrivée As String
Dim AdresseDépart As String
Dim AdresseArrivée As String
Dim NumMois As Integer
Dim NumVehi As Integer

DoCmd.TransferSpreadsheet acImport, , "NewDoc", "C:\Documents and Settings\Administrateur\Mes documents\Vdis.xls", True
DoCmd.SetWarnings False
SQL1 = "UPDATE NewDoc SET adressedépart=Replace(Adressedépart,chr(39),chr(39) & chr(39))"
sql2 = "UPDATE NewDoc SET adressearrivée=Replace(Adressearrivée,chr(39),chr(39) & chr(39))"

DoCmd.RunSQL SQL1
DoCmd.SetWarnings False
DoCmd.RunSQL sql2
DoCmd.SetWarnings False

Set MaBd = CurrentDb
req = "Select * from NewDoc "
Set MaTable = MaBd.OpenRecordset(req, dbOpenDynaset)
NumVehi = Liste1.Column(0)
While Not MaTable.EOF
    valeur1 = CStr(MaTable!HeureDépart)
    valeur2 = CStr(MaTable!HeureArrivée)
    Dat = Left(valeur1, 10) 'ladate
    HeureDépart = Right(valeur1, 8) 'lheure de départ
    HeureArrivée = Right(valeur2, 8) 'lheure de départ
    AdresseDépart = MaTable!AdresseDépart
    AdresseArrivée = MaTable!AdresseArrivée
    NumMois = Month(Dat)
   
   
    'avant cette requette je souhaite verifier que mon enreg n'existe pas dans ma base...
    ReqSql = "Insert into TableTrajet (DateDépart,HeureDépart,AdresseDépart,HeureArrivée,AdresseArrivée,NumVehicule,NumMois)  Values ('" & Dat & "','" & HeureDépart & "','" & AdresseDépart & "','" & HeureArrivée & "','" & AdresseArrivée & "','" & NumVehi & "'," & NumMois & ") "
    DoCmd.RunSQL (ReqSql)
    DoCmd.SetWarnings False
    MaTable.MoveNext

Wend

'suppression des données dans la table NewDoc pour une nouvelle importation
Req2 = "Delete From NewDoc"
DoCmd.RunSQL (Req2)
DoCmd.SetWarnings False
MsgBox "Importation réussi avec succés"

jeudi 12 février 2009 à 10:13:55 | Re : Comment savoir si un enrgistrement existe dans une table Access

Exploreur

Membre Club
C'est ce que je "pensez"..avant de faire taa requête INSERT fait une requête SELECT et vérifie(via ton recordset) si la/les donnée(s) que tu veux écrire existes ou pas dans ta table....

A+
Exploreur

 Linux a un noyau, Windows un pépin
    ** http://exploreur1.labrute.fr **

jeudi 12 février 2009 à 10:24:33 | Re : Comment savoir si un enrgistrement existe dans une table Access

Benythefrog

Lol
Leprobleme ce que je ne sis pas commet faire cette requette...
ni coment marche ce recordset
Merci d'avance
Benoit
jeudi 12 février 2009 à 10:47:47 | Re : Comment savoir si un enrgistrement existe dans une table Access

Exploreur

Membre Club
Un truc du genre....

Dim sSql As String

sSql = "Select * From Tatable Where TonChamp = '" & Ta_Recherche & "'"

Set MaTable = MaBd.OpenRecordset(sSql, dbOpenDynaset)

If MaTable > 0 Then
    MsgBox "Existant dans la base"
    MaTable.Close
    Set MaTable = Nothing
    Exit Sub
End If

A+
Exploreur

 Linux a un noyau, Windows un pépin
    ** http://exploreur1.labrute.fr **

jeudi 12 février 2009 à 10:56:35 | Re : Comment savoir si un enrgistrement existe dans une table Access

mamash_bek

Je te joins un exemple de ce que j'avais pu faire ayant eu d'après ce que j'ai compris de ta demande le même cas.
Petit Détails régulièrement dans ton code tu mets DoCmd.SetWarnings False
Une fois initialisé il reste à False tant que tu ne l'as pas redéclaré à True dans ton code.
'Ou POcode est un champs de ma table
'
  Set rec = CurrentDb.OpenRecordset("select count(POcode) as NBR from population where POpopulation='" & vPop & "';")
    If rec.Fields("NBR").Value = 0 Then DoCmd.RunSQL ("INSERT INTO Population (POpopulation) values ('" & vPop & "');")
    rec.Close
    Set rec = CurrentDb.OpenRecordset("select POcode as NBR from population where POpopulation='" & vPop & "';")
    vPop = rec.Fields("NBR").Value
    rec.Close

Par contre, il est nécessaire de connaitre ce que tu cherches à controler au niveau de table.
Cela te convient il :
   ReqSql = "Select count(NumVehicule) from TableTrajet where DateDépart='" & Dat & "' and HeureDépart='" & HeureDépart & "'  and AdresseDépart='" & AdresseDépart & "' [..]  and NumMois = '" & NumMois & "'

Mais suivant la volumétrie de ta table, cela peut devenir un traitement assez lourd et long. Peut être faudrait il revoir la structure de la table et modifier en conséquence tes recordset ?

jeudi 12 février 2009 à 11:21:06 | Re : Comment savoir si un enrgistrement existe dans une table Access

Benythefrog

C'est exactement ce qu'il me faut pr la requette
Cependant je ne comprens aps tré bien a quoi cela sert mamash_bek
Peut tu m'expliquer en quelque mot a quoi sert ton petit bou de code?
Merci
Benoit
jeudi 12 février 2009 à 13:42:44 | Re : Comment savoir si un enrgistrement existe dans une table Access

mamash_bek

Cela fait ce que te propose Exploreur:
tu comptes le nombre d'élément d'un champ (ici NumVehicule, on aurait pu mettre le numero d'index si tu l'as fait pour ta table) en fonction de paramètres choisis. S'il est à "0" alors tu n'as pas de données.

Ton recordset peux contenir plusieurs 'colonne' (Fields) tu les appelles soit par n° d'index (de mémoire le premier  est 0) soit en fonction des noms que tu leurs as attribué.
ReqSql = "Select NumVehicule as Voit,NameUser as Utilisateur  from ..."
Pour appeler tes données deux manières:
If rec.Fields("Voit").Value reviens à If rec.Fields(0).Value
If rec.Fields("Utilisateur").Value reviens à If rec.Fields(1).Value

Dans ton cas, le champs Fields(0) est vide alors tu n'as fait aucun enregistrement donc tu fais ton insert.

Dans le cas contraire tu as déjà des données, après à toi de voir ce que tu veux faire des données déjà existantes:
les mettre à jour ? Update
les afficher à l'utilisateur ?

A noter selon la structure de ta table (doublon autorisé ou non autorisé), même si tu fais un insert (avec le warnings False) cela n'écrira rien dans la table et aucune alerte à l'écran pour ton utilisateur.
jeudi 12 février 2009 à 14:02:47 | Re : Comment savoir si un enrgistrement existe dans une table Access

Benythefrog

Je te remercie pour ce coup de main trés precieux
Grace a toi mon patron va etre heureu
:P
Je suis actuellement en stage dans une entreprise qui s'occupe spécialement de réseau et aucun salarié ne s'y connait vraiment en Programmation
Merci a vous pour votre aide
Merci pour les conseils

Bonne fin de journée
Benoit

1 2

Cette discussion est classée dans : access, table, requette, existe, enrgistrement


Répondre à ce message

Sujets en rapport avec ce message

Vérifier si une table existe [ par Clonk ] Coment vérifier si une table dans une basse access existe? (même en ouvrant Access directement) Table Access [ par EXCLUSIF ] Bonjour, Comment savoir si une table existe dans une base de données access que je voudrais mettre a jour en créeant la Table "Menu" seulement si ell Rechercher la présence d'une table Access [ par Jeffsig ] bonjour à tous, voila j'suis en froid avec VBA et pourtant je voudrais pouvoir savoir dans le code si une table, dont je connais le nom, est présente. Chercher ds une table access [ par Hatman77178 ] Bonsoir à tous,Je n'arrive pas à ecrire le code qui me permet de chercher un nom dans une table NOM Prénom Adresse à partir d'une zone de texte d'un f DataTable vers Access [ par ELR60 ] Bonjour, je développe une appli sous Visual basic 2005.je voudrais pouvoir renseigner une table Access (qui n'existe pas) dans une base (qui elle exis Lecture trop longue d'une table Access [ par Orthonic ] Bonjour,Je recherche le moyen de lire une table dans une DB Access, je dois afficher le contenu de cette table qui contient 170.000 enregistrement dan [ADO] recherche dans une BdD access en VBA excel [ par annyong ] Bonjour, je souhaite faire une recherche dans une table de ma BdD access, mais ma requete ne fonctionne pas. Si je recherche une valeur numérique, p VBA Access probleme d'importation [ par darkspoilt ] Bonjour j'ai un ptit souci d'importationlorsque j'importe l me créer une table nomTable$_ImputErrors contenant des champs ou il y a un echec lors de l requete access [ par chaudier37 ] bonjourje travaille dans accessj'ai trois tablesune table sociétéavec une liste de sociétésune table métieravec une liste de métiersune table employéa insertion dans une table access par sql [ par chaudier37 ] Bonjourje cherche à inserer des données dans une table par sql.j'ai la syntaxe, à peu près, mais je voudrais connaitre la méthode exacte à utiliser.ma


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,014 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales