IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

Sauvegarder l'image sélectionnée d'une façon permanente


Sujet :

Delphi

  1. #21
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2014
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2014
    Messages : 178
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par pprem Voir le message
    sans oublier les bases : quel est l'objectif final de tout ça. parce que jusque là je vois des hésitations et de multiples approches pour un truc qui reste vague alors qu'on a répondu dès le départ.

    si tu ne sais pas expliquer ce que tu veux faire, c'est probablement parce que ce n'est pas plus clair pour toi que pour nous à te lire.

    les bases de la programmation restent de "décrire les phases pour obtenir un résultat". jusque là, à part "stocker un chemin vers une image" sous Windows (et là, tu as les réponses depuis plusieurs jours), j'vois pas trop où tu veux aller et encore moins pourquoi tu te mets à parler de base de données.

    (j'peux paraître brutal dans la formulation, mais personne ne peut être efficace pour apporter une aide quand on ne sait pas clairement vers quoi tu vas)
    le but de laisser l'utilisateur de choisir une photo qui est stockée dans un endroit indépendantde la BDD
    le but n'est pas avec une ou quatre photos
    c'est juste pour commencer et comprendre la méthode d’appel des photos par path
    le projet final c'est faire une liste des étudiants chacun a une ou photo d'identité
    je pense que ma demande et claire maintenant
    Merci a tous

  2. #22
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    type
      TForm1 ...
        Images: TArray<TImage>;
      ...
     
    proedure TForm1.FormCreate(Sender: TObject);
    begin
      Images := [Image1, Image2, Image3, Image4];
    end;
     
    procedure TForm1.afficherimages;
    var nomimage : String;
    begin 
      for var I := 0 to 3 do Images[I].Picture.Clear;
     
     Query1.SQL.Text:='SELECT numero,image from IMAGES  order by numero';
     Query1.Open;
     while not Query1.EOF do
     begin
       nomImage:=Query1.FieldByName('Image').asString; 
       if FileExists(nomImage) then
       begin
         var numImage := Query1.FieldByName('numero').AsInteger;
         Assert((numImage >= 0) and (NumImage < 4));
         Images[numImage].Picture.LoadFromFile(nomimage);
       end;
       Query1.Next;
     end;
    end;
    quand à l'UPDATE il ne fonctionnera que si l'enregistrement existe déjà, sinon il faut faire un INSERT
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #23
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par ABBAN270 Voir le message
    le bute de laisser l'utilisateur de choisir une photo qui est stocker dans un endroit indépendantde la BDD
    le bute n'est pas avec une ou quartes photos
    c'est juste pour commencer et comprendre la méthode d’appelé des photos par path
    le projet finale c'est faire une liste des étudiants chacun a une ou photo d'identité
    je pense que ma demande et clair maintenant
    Merci a tous
    c'est toujours plus clair quand le but est expliqué au lieu de simplement poser des questions dans le vide

    donc on recommence.

    tu peux utiliser un TFrame : Etudiant qui contient un TImage (en plus du nom, prénom, filière et tout ce que tu veux) que tu pourras instancié pour chaque étudiant à afficher, sauf si vraiment tu ne veux afficher que les photos, dans ce cas tu peux rester sur des TImage...mais tu ne vas pas en afficher uniquement 4 ? donc que ce soit des TFrame ou des TImage tu vas les instancier dynamiquement et les mettre dans une liste

    je suppose que l'étudiant possède un numéro dans la base, et le champ photo peut être directement dans la table Etudiant

    du coup tu as un "SELECT Image from Etudiants WHERE id = :NUM" et un "Query.Params[0].AsInteger := NumEtudiant;" pour obtenir le nom de sa photo

    et tu peux un "UPDATE Etudiants SET Image = :Image WHERE id = :NUM" pour mettre à jour le nom de sa photo
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  4. #24
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2014
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2014
    Messages : 178
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    type
      TForm1 ...
        Images: TArray<TImage>;
      ...
     
    proedure TForm1.FormCreate(Sender: TObject);
    begin
      Images := [Image1, Image2, Image3, Image4];
    end;
     
    procedure TForm1.afficherimages;
    var nomimage : String;
    begin 
      for var I := 0 to 3 do Images[I].Picture.Clear;
     
     Query1.SQL.Text:='SELECT numero,image from IMAGES  order by numero';
     Query1.Open;
     while not Query1.EOF do
     begin
       nomImage:=Query1.FieldByName('Image').asString; 
       if FileExists(nomImage) then
       begin
         var numImage := Query1.FieldByName('numero').AsInteger;
         Assert((numImage >= 0) and (NumImage < 4));
         Images[numImage].Picture.LoadFromFile(nomimage);
       end;
       Query1.Next;
     end;
    end;
    quand à l'UPDATE il ne fonctionnera que si l'enregistrement existe déjà, sinon il faut faire un INSERT
    les enregistrements existent déjà
    Nom : Capture4.PNG
Affichages : 208
Taille : 7,9 Ko

  5. #25
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Mes excuses, le code avait été écrit "à la volée" sur le forum sans vérification de compilation, vous imaginez bien que je n'allais pas écrire un programme test sans avoir eu, au préalable les rebseignements demandés.

    Au temps pour moi donc pour ce qui est des Images.Picture.Clear à remplacer par Images.Picture:=nil;ou de la ligne Timage(Sender).LoadFromFile(Opendialog1.fileName) où il fallait lire Timage(Sender).Picture.LoadFromFile(Opendialog1.fileName)Néanmoins pour ce qui est des ParamByName cela dépend totalement du type de Query1 (TFDQUery, TADOQuery ... ?) donc si vous ne nous renseignez pas sur ce point, point de solution

    Merci aussi, d'utiliser des copier-coller de code plutôt que des images
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #26
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    quand à l'UPDATE il ne fonctionnera que si l'enregistrement existe déjà, sinon il faut faire un INSERT
    C'était indiqué dans mon post et en rouge qui plus est
    c'est toujours plus clair quand le but est expliqué au lieu de simplement poser des questions dans le vide
    je ne le fait pas dire
    tu peux utiliser un TFrame : Etudiant qui contient un TImage (en plus du nom, prénom, filière et tout ce que tu veux) que tu pourras instancié pour chaque étudiant à afficher, sauf si vraiment tu ne veux afficher que les photos, dans ce cas tu peux rester sur des TImage...mais tu ne vas pas en afficher uniquement 4 ? donc que ce soit des TFrame ou des TImage tu vas les instancier dynamiquement et les mettre dans une liste
    Ou ... avec D10.4 il y a quand même plein de solutions
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  7. #27
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2014
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2014
    Messages : 178
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    c'est toujours plus clair quand le but est expliqué au lieu de simplement poser des questions dans le vide

    donc on recommence.

    tu peux utiliser un TFrame : Etudiant qui contient un TImage (en plus du nom, prénom, filière et tout ce que tu veux) que tu pourras instancié pour chaque étudiant à afficher, sauf si vraiment tu ne veux afficher que les photos, dans ce cas tu peux rester sur des TImage...mais tu ne vas pas en afficher uniquement 4 ? donc que ce soit des TFrame ou des TImage tu vas les instancier dynamiquement et les mettre dans une liste

    je suppose que l'étudiant possède un numéro dans la base, et le champ photo peut être directement dans la table Etudiant

    du coup tu as un "SELECT Image from Etudiants WHERE id = :NUM" et un "Query.Params[0].AsInteger := NumEtudiant;" pour obtenir le nom de sa photo

    et tu peux un "UPDATE Etudiants SET Image = :Image WHERE id = :NUM" pour mettre à jour le nom de sa photo
    salut merci pour la participation
    mais je voulez pas compliquer les choses et ajouter plus de détail
    jai créer une table avec le minimum possible qui contient (numero,image)
    jai chercher le composent TFrame mais je ne le trouve pas
    je vais l'essayer peut etre que c'est mieux que Timage

  8. #28
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2014
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2014
    Messages : 178
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    C'était indiqué dans mon post et en rouge qui plus est

    je ne le fait pas dire

    Ou ... avec D10.4 il y a quand même plein de solutions
    j'utilise les composant suivant
    TADOconnection,TADOtable,TADOQuery,DATAsource
    voila le code complet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    unit Unit4;
     
    interface
     
    uses
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
      Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls,
      Data.Bind.EngExt, Vcl.Bind.DBEngExt, Data.Bind.Components,
      Data.Bind.ObjectScope, System.Rtti, System.Bindings.Outputs, Data.Bind.GenData,
      Vcl.ExtDlgs, Data.DB, Data.Win.ADODB;
     
    type
      TForm4 = class(TForm)
        Button1: TButton;
        OpenDialog1: TOpenDialog;
        Image1: TImage;
        OpenPictureDialog1: TOpenPictureDialog;
        Image2: TImage;
        Image3: TImage;
        Image4: TImage;
        ADOTable1: TADOTable;
        Query1: TADOQuery;
        DataSource1: TDataSource;
        ADOConnection1: TADOConnection;
        Edit1: TEdit;
        procedure Button1Click(Sender: TObject);
        procedure afficherimages;
        procedure FormCreate(Sender: TObject);
        procedure Image1Click(Sender: TObject);
     
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form4: TForm4;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm4.FormCreate(Sender: TObject);
    begin
    afficherimages;
    end;
     
    procedure TForm4.Image1Click(Sender: TObject);
    begin
     if Opendialog1.Execute then
      begin
        TImage(Sender).Picture.LoadFromFile(OpenDialog1.FileName);
        Query1.SQL.Text:='UPDATE IMAGES SET IMAGE=:N WHERE NUMERO=:T';
        Query1.Parameters.ParamByName('N').Value.asString:=Opendialog1.FileName;
        Query1.Parameters.ParamByName('T').Value.asInteger:=TImage(Sender).Tag;
        Query1.ExecSQL;
      end;
     
    end;
     
    procedure TForm4.afficherimages;
    var nomimage : String;
    begin
     Query1.SQL.Text:='SELECT numero,image from IMAGES  order by numero';
     Query1.Open;
     nomImage:=Query1.FieldByName('Image').asString;
     if FileExists(nomImage) then  Image1.Picture.LoadFromFile(nomimage) else  Image1.Picture:=nil;
     Query1.Next;
     nomImage:=Query1.FieldByName('Image').asString;
     if FileExists(nomImage) then  Image2.Picture.LoadFromFile(nomimage) else  Image2.Picture:=nil;
     Query1.Next;
     nomImage:=Query1.FieldByName('Image').asString;
     if FileExists(nomImage) then  Image3.Picture.LoadFromFile(nomimage) else  Image3.Picture:=nil;
     Query1.Next;
     nomImage:=Query1.FieldByName('Image').asString;
     if FileExists(nomImage) then Image4.Picture.LoadFromFile(nomimage) else  Image4.Picture:=nil;
     Query1.Close;
    end;
    end.
    Mais l'erreur reste toujours

  9. #29
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    ADO ! je déteste

    Le problème c'est que l'on ne sait pas quand se produit "l'erreur" à l'affichage, après ....
    je présume que c'est sur le onClick d'une image mais tant que ce n'est pas explicite difficile de répondre

    Tdatasource, TAdoTable : inutiles
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  10. #30
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 667
    Points : 5 235
    Points
    5 235
    Par défaut
    Pour moi, cela vient de .AsString.
    D'ailleurs, la documentation officielle recommande de passer par Value directement :
    https://docwiki.embarcadero.com/Code...Query_(Delphi)

    Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Query1.Parameters.ParamByName('N').DataType := ftString;
    Query1.Parameters.ParamByName('N').Value := Opendialog1.FileName;
     
    Query1.Parameters.ParamByName('T').DataType := ftInteger;
    Query1.Parameters.ParamByName('T').Value := TImage(Sender).Tag;
     
    Query1.Prepared := true;

  11. #31
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par popo Voir le message
    Pour moi, cela vient de .AsString.
    ADO
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  12. #32
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2014
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2014
    Messages : 178
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par popo Voir le message
    Pour moi, cela vient de .AsString.
    le code marche sans erreur
    mais quand je relance l'application la photo revient par defaut
    la mise a jour (UPDATE) ne marche pas


    Citation Envoyé par SergioMaster Voir le message
    ADO
    hhhhh
    vous n'aimez pas l'ADO et pour quoi ...?
    et j'utilise quoi au lieu de ADO
    des conseilles ...!!

  13. #33
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 344
    Points : 3 122
    Points
    3 122
    Par défaut
    Bonjour,

    SQlite est très bien pour du mono utilisateur.

    A+
    Charly

  14. #34
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 667
    Points : 5 235
    Points
    5 235
    Par défaut
    Citation Envoyé par ABBAN270 Voir le message
    le code marche sans erreur
    mais quand je relance l'application la photo revient par defaut
    la mise a jour (UPDATE) ne marche pas
    Tu n'aurais pas enlevé le ExecSQL par hasard ?
    Prepared ne remplace pas ExecSQL.

    Puisque tu es sur SQL Serveur, tu peux tracer via SQL Profiler et voir la requête qui arrive.

    Citation Envoyé par ABBAN270 Voir le message
    hhhhh
    vous n'aimez pas l'ADO et pour quoi ...?
    et j'utilise quoi au lieu de ADO
    des conseilles ...!!
    Perso, ADO ne me dérange pas.
    Mais je peux toutefois donner un conseil :
    Créer ta propre base au lieu de créer des tables dans master !!!

  15. #35
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2014
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2014
    Messages : 178
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par popo Voir le message
    Tu n'aurais pas enlevé le ExecSQL par hasard ?
    Prepared ne remplace pas ExecSQL.

    Puisque tu es sur SQL Serveur, tu peux tracer via SQL Profiler et voir la requête qui arrive.



    Perso, ADO ne me dérange pas.
    Mais je peux toutefois donner un conseil :
    Créer ta propre base au lieu de créer des tables dans master !!!
    merci pour les conseilles
    c'est vrais vous avez raison....
    mais c'est juste pour les essais

  16. #36
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 667
    Points : 5 235
    Points
    5 235
    Par défaut
    Et donc, le ExecSQL ?
    Tu l'avais viré ?
    Tu l'as remis ?

  17. #37
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2014
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2014
    Messages : 178
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par popo Voir le message
    Et donc, le ExecSQL ?
    Tu l'avais viré ?
    Tu l'as remis ?
    voila le code qui marche sans erreurs par le ExecSQL
    mais la sauvegarde de la selection du photo n'est pas enregistrer après le relancement du programme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    procedure TForm4.Image4Click(Sender: TObject);
    begin
     if Opendialog1.Execute then
     
      begin
     
        TImage(Sender).Picture.LoadFromFile(OpenDialog1.FileName);
        Query1.SQL.Text:='UPDATE IMAGES SET IMAGE=:N WHERE NUMERO=:T';
     
        Query1.Parameters.ParamByName('N').Value:=Opendialog1.FileName;
        Query1.Parameters.ParamByName('T').Value:=TImage(Sender).Tag;
     
        edit1.Text:= Opendialog1.FileName;
        edit2.Text:= IntToStr(TImage(Sender).Tag);
        Query1.ExecSQL;
     
      end;
     
    end;

  18. #38
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    Citation Envoyé par ABBAN270 Voir le message
    mais la sauvegarde de la selection du photo n'est pas enregistrée après le relancement du programme
    Avez vous vérifié que les tags de chacun des composants images ?

    Puisque vous écrivez ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    edit2.Text:= IntToStr(TImage(Sender).Tag);
    sorte de debug donc, quelle est la valeur affichée ? (Quelle manie d'utiliser des Tedit pour une simple information ! Un simple Tlabel suffit)

    vous n'aimez pas l'ADO et pourquoi ...?
    et j'utilise quoi au lieu de ADO
    des conseils ...!!
    Non je n'aime pas ADO et ce depuis longtemps, mes arguments seraient trop longs à développer
    Evidemment avec le SGBD utilisé : SQL 2014 et certainement une version Delphi: 10.4 Community vous en avez été réduit à ADO à cause de limitations de la version.
    Nom : Capture.PNG
Affichages : 226
Taille : 27,2 Ko

    Mais puisque c'est dans le cadre de test un base de données SQLite (comme l'a si bien suggéré Charly910) et Firedac pour ce qui est des composants aurait été tout aussi pertinent.

    Encore une fois, cahier des charges et contraintes incomplets laissent toute latitude à spéculations !
    MSSQL 2014 pour faire des essais que d'installations compliquées pour des tests
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  19. #39
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2014
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2014
    Messages : 178
    Points : 44
    Points
    44
    Par défaut
    Bonjour,

    edit2.Text afficher toujours un "0".

    j'utilise Tedit au lieu de Tlabel: c'est juste une habitude quand je fait des tests

    et merci pour les infos concernant les SGBD

    Question:
    - pourquoi la quatrième image n'est pas afficher comme vierge pourtant jai remplit seulement 03 cases dans la table IMAGES
    - pourquoi la sauvegarde de la selection d'une photo n'est pas enregistrer après le relancement du programme

    Premier lancement de l'application:
    Nom : Capture.PNG
Affichages : 216
Taille : 293,4 Ko

    Table IMAGES
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    1	C:\Users\Public\Pictures\Sample Pictures\Chrysanthemum.jpg
    2	C:\Users\Public\Pictures\Sample Pictures\Hydrangeas.jpg
    3	C:\Users\Public\Pictures\Sample Pictures\Koala.jpg
    NULL	NULL
    .

  20. #40
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par ABBAN270 Voir le message
    edit2.Text afficher toujours un "0".
    Je m'en doutais ! pourtant j'avais bien indiqué :
    Bien évidemment cela nécessite que chaque image ait sa propriété tag égale au numéro de ligne (enregistrement)
    J'aurais du l'écrire en gras et en rouge ? Donc la première chose à faire est de renseigner au design la propriété tag de chacune des images (respectivement 1,2,3,4)

    N.B. Bien sûr la méthode de Paul (stocker les objets images dans un tableau) est une solution qui évite ce tag

    Citation Envoyé par ABBAN270 Voir le message
    Question:
    - pourquoi la quatrième image n'est pas affichée comme vierge pourtant j'ai rempli seulement 03 cases dans la table IMAGES
    - pourquoi la sauvegarde de la selection d'une photo n'est pas enregistrer après le relancement du programme
    1 - Parce que le EOF n'est pas traité, le Query.Next ne fait donc rien. RAPPEL dans mon code j'avais bien indiqué que CETTE PROCEDURE PRESUPPOSE QUE LES 4 LIGNES DE LA TABLE EXISTENT;
    (en fin de compte, écrire en Rouge ne suffit pas )
    2 - Parce que le SQL est un UPDATE or la ligne avec le NUMERO=0 n'existe pas, donc pas de mise à jour.
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. Réponses: 0
    Dernier message: 06/11/2019, 08h19
  2. Réponses: 3
    Dernier message: 09/02/2016, 01h05
  3. [Débutant] inserer des données d'une façon permanente
    Par pharaon88 dans le forum C#
    Réponses: 0
    Dernier message: 08/03/2013, 20h57
  4. Réponses: 4
    Dernier message: 08/07/2006, 06h36
  5. Réponses: 3
    Dernier message: 23/06/2006, 12h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo