je cherche l'équivalent de la fonction findkey delphi 2007 en delphi 2010.
Version imprimable
je cherche l'équivalent de la fonction findkey delphi 2007 en delphi 2010.
bonjour,
personnellement j'ai jamais utilisé cette fonction, par contre je te propose d'utilisé la fonction locate.
est-ce que la fonction Locate peut m'aider à vérifier le dédoublement de clé ?
Bonjour,
pour obtenir une bonne réponse sur le Findkey (comme sur le Locate) , il aurait déjà fallu indiquer quels composants de connexion vous utilisiez.
en fait "TTable.Findkey" existe en D2010
si par Findkey vous entendiez : vérifier s'il y a des clés en double (ce qui voudrait dire que vous n'avez pas indiqué de contraintes d'unicité !)
un SQL est parfois plus simple ,quelque chose comme ceci
Code:
1
2
3
4 SELECT CLE,COUNT(CLE) FROM TABLE GROUP BY CLE HAVING COUNT(CLE)>1
Salut
FindKey est une méthode de recherche s'appuyant sur l'index courant, c'est surtout utile pour les bases de type Paradox (navigationnelles), pour un vrai serveur SQL, son emploi n'est, si je me souviens bien, pas vraiment pertinent.
Comme SergioMaster le dit, il serait bon de savoir sur quel type de base l'appliquer.
@+
salut, j'utilise une base de données access ou bien sql server , donc je travaille avec adotable
@sarahlareleve,
bien sur tu peut procéder de cette maniére pour par exemple l'ajout d'un enregistrementCitation:
est-ce que la fonction Locate peut m'aider à vérifier le dédoublement de clé ?
Code:
1
2
3
4
5
6
7
8
9
10
11 with adotable do if not locate('cle',valeur,[locaseinsensitive]) then begin insert; fieldvalues[champ1]:=val1; ... n; post; end;
Eh bien FindKey !!! cela existe toujours même en XE5
Bde.DBTables.TTable.FindKey
Datasnap.DBClient.TCustomClientDataSet.FindKey
FireDAC.Comp.DataSet.TFDDataSet.FindKey
Une question bien mal posé qui aurait du être
le Locate fera parfaitement l'affaire
Sinon pour SQL Server, évite des TADOTable au profit de TADOQuery aussi bien pour les SELECT que les INSERT ou UPDATE, il est toujours mieux de maitriser le SQL qui circule !
Si tes tables sont correctement défini dans SQL Server avec les contraintes nécessaire et si par chance ton ADO récupère correctement les méta-données,
il devrait contenir dans TADOTable.IndexDefs un ixPrimary ou ixUnique
dans TIndexDef.Options
Ce qui devrait interdire le post, une exception (voir aussi OnPostError)