Jenojen
Messages postés12Date d'inscriptionsamedi 1 décembre 2007StatutMembreDernière intervention28 août 2008
-
27 août 2008 à 11:44
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 2021
-
28 août 2008 à 12:11
Bonjour,
J'aimerais savoir comment éviter d'enregistrer deux fois les mêmes données lorsqu'on passe par le SQL. En gros j'ai un bouton derrière lequel y a du SQL (insert into...) et j'aimerais qu'avant d'exécuter je puisse vérifier que les données que je veux entrer ne sont pas dèja dedans pour éviter les erreurs avec les clés primaires. En gros un truc qui vérifie dans la table que le clé primaire n'y soit pas déja.
WhiteHippo
Messages postés1154Date d'inscriptionsamedi 14 août 2004StatutMembreDernière intervention 5 avril 20123 27 août 2008 à 19:11
Allez après j'arrete
>3sec....
Tout dépend de la façon dont la gestion de la base a été faite et de la profondeur d'imbrication et des liens de celle-ci dans un système existant déjà bien ancré. Remettre en cause la structure d'une base de données peut engendrer beaucoup, voir même beaucoup trop de modifications, si la conception intiale a été mal faite.
P.S. Je sais que je ne t'apprend rien, mais cette remarque pourra toujours servir à Jenojen
<hr />"L'imagination est plus importante que le savoir." Albert Einstein
Vous n’avez pas trouvé la réponse que vous recherchez ?
Jenojen
Messages postés12Date d'inscriptionsamedi 1 décembre 2007StatutMembreDernière intervention28 août 2008 27 août 2008 à 19:20
Ma base de données a été faite sur de très bonnes bases vu qu'elle a été faite sur base du dico donné par le prof donc pas de soucis de ce coté la. Mais je sèche toujours quant à vérifier si les données que je veux rentrer ne se trouvent pas déja dans ma table. De plus la proposition de champ incrémenté ne tient pas ici, étant donné que ce qui sert de clé primaire à ma table tparier ici en l'occurence est une clé extérieure.
J'ai juste besoin d'un code qui puisse véirifer que les données que je veux enregistrer par une requête sql ne sont pas dèja présentes dans ma db parce que si je les ajoute mais quelles sont dèja présentes (clé primaire oblige) alors le prog plante tout simplement.
WhiteHippo
Messages postés1154Date d'inscriptionsamedi 14 août 2004StatutMembreDernière intervention 5 avril 20123 27 août 2008 à 19:54
Je te donne une piste :
Tu peux rechercher si un enregistrement existe par un "SELECT * FROM MaBaseDeDonnée WHERE (Champ1=Valeur)" Si la requête ne te renvoit rien c'est que l'enregistrement n'est pas présent dans la base, sinon après soit tu modifies l'enregistrement existant soit tu avertit l'utilisateur et tu ne changes rien.
P.S. Je te conseille de nouveau d'aller voir sur le forum SQL.
Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein
Jenojen
Messages postés12Date d'inscriptionsamedi 1 décembre 2007StatutMembreDernière intervention28 août 2008 27 août 2008 à 20:05
Merci pour ta réponse.
J'ai été voir mais j'ai pas trouvé si tu sais me rediriger vers un lien qui explique ça je t'en serais reconnaissant. J'ai créé mon propre topic sur la question mais sans succès et la méthode que tu m'expliques ici, j'en avais tenté un ersatz mais je ne savais pas comment appliquer cette requète et comment recevoir la réponse.
En gros j'avais l'idée mais pas la facon de faire.
Peux tu spécifier un peu plus ton aide ou me renvoyer vers un topic qui explique ça au mieux?
Merci d'avance.
sql.text:('select idcheval from tparier where idcheval ' +dm.tparticiper.fieldbyname('idcheval').asstring);
WhiteHippo
Messages postés1154Date d'inscriptionsamedi 14 août 2004StatutMembreDernière intervention 5 avril 20123 27 août 2008 à 20:16
Il ne faut pas oublier les guillemets, créés par la fonction QuotedStr :sql.text:'SELECT * FROM tparier WHERE idcheval'+QuotedStr(dm.tparticiper.fieldbyname('idcheval').asstring);
Jenojen
Messages postés12Date d'inscriptionsamedi 1 décembre 2007StatutMembreDernière intervention28 août 2008 27 août 2008 à 20:30
Merci pour ta réponse.
Le champ idcheval est un numérique.
J'ai suivi ton lien et ces sujets renvoient quasi tous à la supression de doublon et moi ce que je veux c'est empêcher leur création et je n'ai rien trouvé de tout cela en suivant ce lien.
Mon problème n'est pas la ligne sql en soi, c'est de savoir qu'en faire.Comment en retirer le résultat pour l'appliquer à une condition.
Jenojen
Messages postés12Date d'inscriptionsamedi 1 décembre 2007StatutMembreDernière intervention28 août 2008 28 août 2008 à 10:02
Désolé si j'ai pu en agacer certains ou paraitre paresseux.
Voici tout de même la solution à mon problème.
procedure Tgestionparis.dbChevauxDblClick(Sender: TObject);
begin
With dm.queryExe do
begin
sql.clear; sql.text:( 'select idcheval from tparier where idcheval ' +dm.tparticiper.fieldbyname('idcheval').asstring + 'and idtickets = '+dm.tTickets.fieldbyName('idtickets').asstring);
execsql;
open;
end;
if dm.queryExe.recordcount>=1 then
ShowMessage('Ce cheval est deja joué')
else
begin