alexyou
Messages postés14Date d'inscriptiondimanche 4 juin 2006StatutMembreDernière intervention17 octobre 2009
-
18 mars 2007 à 11:22
ThWilliam
Messages postés418Date d'inscriptionmardi 3 janvier 2006StatutMembreDernière intervention26 novembre 2013
-
19 mars 2007 à 19:44
bonjour
j'ai créer une base de donnée paradox, et j'ai rempli les champs via la fiche,et quand j'ai essaié de modifier les données via mon code j'ai un message d'erreur(Table1: l'ensemble de données n'est pas en mode Edition ou Insertion)
je ne sais pas comment rendre ma table en mode insertion! Merci de votre aides.
ThWilliam
Messages postés418Date d'inscriptionmardi 3 janvier 2006StatutMembreDernière intervention26 novembre 20134 18 mars 2007 à 11:52
Salut,
Pour modifier un enregistrement :
Table1.Edit; // place la table en mode édtition
//....
Table1.Post; // pour valider les modifications
// ou Table1.Cancel pour annuler les modifications
Pour ajouter un enregistrement :
Table1.Append; // place la table en mode insertion
//...
Table1.Post; // ou Cancel
Un conseil : lis l'aide de Delphi concernant l'emploi de base de données...
alexyou
Messages postés14Date d'inscriptiondimanche 4 juin 2006StatutMembreDernière intervention17 octobre 2009 18 mars 2007 à 23:51
Merci de votre réponse,j'ai aussi un problème : j'ai choisi un nombre aléatoirement par random et je me positionne sur l'enregistrement numéro (le nombre aléatoire)mais toujours je me trouve au dérnier enregistrement,un enregistrement est composé de 3 champs un identifiant numérique,un string(c'est le mot=>dictionnaire)et un entier intialiser a 0 pour marquer si le mot a été déja choisie ou pas voila mon code
Randomize;
repeat
choix :=random(TAILLE_TOTAL)+1;
Table1.MoveBy(choix);
if (Table1.Fields[2].AsInteger=0)then MotCherche:=Table1.Fields[1].AsString;
until (Table1.Fields[2].AsInteger=0);
Table1.Fields[3].AsInteger:=1;//marquer Ce mot pr ne pas être l'utilisé
j'essaie de trouver une solution mais si vous m'aidez je serai reconnaissant.
alexyou
Messages postés14Date d'inscriptiondimanche 4 juin 2006StatutMembreDernière intervention17 octobre 2009 19 mars 2007 à 00:16
j'ai trouver la réponse je crois que juste j'ai oublier de mettre Table1.First; mais je ne sais pas si ma logique de programmation de la boucle et bonne ou pas pour choisir qu'une seule fois un mot.
ThWilliam
Messages postés418Date d'inscriptionmardi 3 janvier 2006StatutMembreDernière intervention26 novembre 20134 19 mars 2007 à 19:44
Salut,
Une boucle avec un random n'est pas, à mon avis, la meilleure solution.
Imagine que ta table a 200 mots et que 198 ont déjà été choisis. Il va falloir quelques random avant de tomber sur les 2 libres !
Pourquoi ne filtres-tu pas la table sur les mots non choisis ?
Je suppose que ton fields[2] s'appelle "Used".
function ChercheMot: string;
var
N: integer;
begin
Table1.Filter:= 'USED < 1'; // on prend les 0 et les ''
Table1.Filtered:= true; N:Table1.RecordCount; // nombre d'enregistrements avec Used 0
if N > 0 then
begin
Randomize;
Table1.MoveBy(Random(N +1);
Result:= Table1.Fields[1].asString;
Table1.Edit;
Table1.Fields[2].asInteger:= 1;
Table1.Post;
end
else
Result:= '';
Table1.Filtered:= false;
end;