Pb d'execution requête

povtype Messages postés 11 Date d'inscription mercredi 17 septembre 2008 Statut Membre Dernière intervention 26 septembre 2008 - 25 sept. 2008 à 14:52
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 - 26 sept. 2008 à 22:26
Bonjour à tous.

Je suis en train de créer une application qui a pour but d'enregistrer tous les fichiers contenus dans un répertoire.

Voice le code ue j'utilise:

procedure TForm1.Button1Click(Sender: TObject);
{$WARN SYMBOL_PLATFORM OFF}
Var Chemin : String;
    Donnees: String;
    Info   : TSearchRec;
begin
  ListBox1.Items.Clear;                //ligne que je compte virer
 
  { Pour être sur que la barre oblique finisse le nom du chemin }
  Chemin := IncludeTrailingPathDelimiter('C:\a_test');
 
  { Recherche de la première entrée du répertoire }
  If FindFirst(Chemin+'*.*',faAnyFile,Info)=0Then
  Begin
    Repeat
 
        ListBox1.Items.Add(Info.FindData.cFileName); //ligne que je compte virer
        sauvegarde.insert;
        Donnees := Info.FindData.cFileName;
        sauvegarde.FieldByName('nom').AsString:=Donnees.Text; *
 
      { Il faut ensuite rechercher l'entrée suivante }
    Until FindNext(Info)<>0;
 
    { Dans le cas ou une entrée au moins est trouvée il faut }
    { appeler FindClose pour libérer les ressources de la recherche }
    FindClose(Info);
  End;


notez que j'ai testé si ça relevait bien les fichiers dans ma liste box, de ce côté là pas de problème, le soucis c'est avec la requête d'insertion au niveau de l'*, ça me marque
type record object ou class requis
.

il est possible qu'il y aie un problème au niveau de l'affectation de la variable "Donnees".

Si quelqu'un peut m'eclaircir sur ce que je dois mettre à la place...

10 réponses

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
25 sept. 2008 à 15:23
tu ne peu pas faire ça :

sauvegarde.FieldByName('nom').AsString:=Donnees.Text; *

* en delphi c'est "multiplier" ...

<hr size="2" width="100%" />
0
povtype Messages postés 11 Date d'inscription mercredi 17 septembre 2008 Statut Membre Dernière intervention 26 septembre 2008
25 sept. 2008 à 15:36
heu multiplier à la place de ça?

sauvegarde.FieldByName('nom').AsString:=Donnees.Text;

Il faut bien taper la requête sinon comment le programme peut deviner le champ dans lequel il va faire l'enregistrement.

De plus j'ai déjà utilisé ce genre de requête pour faire un enregistrement à la fois et là ça marchait c'est quand je veux en faire plusieurs en même temps que ça m.....
0
povtype Messages postés 11 Date d'inscription mercredi 17 septembre 2008 Statut Membre Dernière intervention 26 septembre 2008
25 sept. 2008 à 15:43
ok je viens de comprendre ce que tu viens de mettre, le * n'est pas dans le code, c'était juste pour situer la position de l'erreur en plus je l'ai marqué dans le bas de mon message.
0
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
26 sept. 2008 à 08:59
Salut,

Ta variable Donnees est une string... Donc pas de propriété .Text, d'où le message d'erreur rencontré... Si tu mets juste :
sauvegarde.FieldByName('nom').AsString := Donnees;
ça devrait passer...
Idée : Tu dois pouvoir également enregistrer la liste complète des fichiers dans un seul enregistrement en utilisant un champ BLOB dans lequel tu stockes un TStrings contenant la liste des fichiers recherchés...

Simon
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
povtype Messages postés 11 Date d'inscription mercredi 17 septembre 2008 Statut Membre Dernière intervention 26 septembre 2008
26 sept. 2008 à 09:32
ok je viens de virer ce .text comme tu viens de me le recommander et là l message d'erreur a changer:

Lorsque je clique sur le bouton en question, ça me marque "sauvegarde: impossible d'effectuer cette opération sur un ensemble de données fermées."
0
povtype Messages postés 11 Date d'inscription mercredi 17 septembre 2008 Statut Membre Dernière intervention 26 septembre 2008
26 sept. 2008 à 10:16
à mon avis le problème doit être au niveau de l'affectation de la variable donnes.
0
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
26 sept. 2008 à 13:41
Ah bé non, c'est pourtant clair... ton ensemble de données est fermé

Il faut juste que tu ouvres ta table (avec un .open) avant ton findfirst par exemple.

Simon
0
povtype Messages postés 11 Date d'inscription mercredi 17 septembre 2008 Statut Membre Dernière intervention 26 septembre 2008
26 sept. 2008 à 14:14
effectivement, je viens de rajouter le .open avant le findfirst et là ça m'enregistre plusieurs "Info.FindData.cFileName" et non les noms des fichiers comme je le voudrais. J'ai donc mal affecté la variable données.
0
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
26 sept. 2008 à 22:23
Essaie avec :
Donnees := Info.FileName

Simon
0
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
26 sept. 2008 à 22:26
et, pour valider l'enregistrement fais un sauvegarde.Post après la ligne :
sauvegarde.FieldByName('nom').AsString:=Donnees

Simon
0
Rejoignez-nous