Salut les gars j'ai écrit une fonction qui doit vérifier l'ID donnée à la fonction comme iID
puis sortie le nom du membre de celui-ci se trouve, sinon il doit la sortie qu'il ne se trouve pasne peut pas effectuer cette opération sur un jeu de données ouvert/fermé?
Un autre la table est active lorsque cette fonction est appelée donc il faut changer la table Members
(pour rechercher l'ID), puis de nouveau par la suite (j'ai plusieurs tables)
function fCheckID(iID:integer):String;
var sTable:string;
begin
sTable:=datamoduleX.tableX.TableName;
datamoduleX.tableX.TableName:='Members';
if datamoduleX.tableX.Locate('RefNo',iID,[]) then
result:=dmRooiX.tblRooiX['Name']+' '+datamoduleX.tableX['Surname']
else
result:='ID: '+inttostr(iID)+' does not exist';
datamoduleX.tableX.TableName:=sTable;
end;
mais le problème est à chaque fois que j'appelle cette fonction Je reçois une erreur qui dit "Impossible d'effectuer cette opération sur un dataset ouvert"
si je ferme l'ensemble de données avant d'exécuter la fonction je reçois "Impossible d'effectuer cette opération sur un ensemble de données fermé"
Je sais que l'erreur se produit lorsque j'essaie d'accéder au nom de la table ou de la changer (la fonction ne donne pas l'erreur lors de ces 3 lignes sont commentées)
Je ne sais pas comment faire ce travail toute aide serait grandement appréciée
Utilisez une requête préparée pour ce genre d'opérations –
Je suis désolé mais je ne sais pas ce que vous entendez par là – RaymondSWalters
Votre approche est tout à fait tort, imo: a) vous semblez ignorer que vous pouvez avoir plus d'une table ouverte en même temps; b) Ne modifiez pas TableName d'une table pour accéder à une table différente dans la base de données, utilisez plutôt un composant Table distinct; c) Vous effectuez une localisation sur un ensemble de données dans un module de données, mais regardez les données depuis une autre table dans un autre module de données. Je pense que ce serait mieux si vous étudiez un tutoriel Delphi db en ligne de base et recommencez. – MartynA