begin process at 2013 05 26 02:50:23
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Base de données

 > 

Autre

 > 

Mon Timage est-il malade? Que faire?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Mon Timage est-il malade? Que faire?

lundi 18 juin 2007 à 18:51:49 | Mon Timage est-il malade? Que faire?

leader2000

Mes grandes salutations à Tous!

J'ai une question. Mais curieusement, j'ai comme l'impression que cette question a été posée dans ce forum il y a de cela plusieurs mois. Malheureusement, sans reponse! Je n'avais pu repondre à cette dernière parce que j'en avais aucune notion pratique dessus.
Mais alors, je me rends compte que cette même préoccupation m'est aperçue dans mon travail.
La voici ma question:
J'ai une base de données, ayant trois champs: Nom, Fonction, Image
J'ai dû saisir trois enrenregistrements accompagnés de leurs fotos (passées par un scannage et ensuite importées dans mon Timage afin d'être enregistrées). Quand je defile dans ma Base de données, je me rends compte qu'aucune foto n'a été stockée.

Comme vous le voyez. Les codes ci-dessous me permette de faire ce processus. Ça marche "parfait". (juste pour l'importation dans le Timage). Après avoir saisi mes données et importer ma foto dans mon Timage, quand je clique sur mon Tbutton de sauvegarde. Je constate que l'enregistrement est fait seulement pour les champs: Nom, Fonction (mais aucune
image n'a été enregistrée pour ledit enregistrement). Que s'passe-t-il?

AdoVisGeral.FieldByName('movel').AsString:= maskedit2.text;
  AdoVisGeral.FieldByName('turma').AsString:= edit41.text;
  AdoVisGeral.FieldByName('periodo').AsString:= edit42.text;


procedure TVisGeral.BitBtn4Click(Sender: TObject);
begin
  if messageDlg('êtes-vous sûr de sauvegarder?', mtConfirmation, [mbYES, mbNO], 0) = mrYes then
  begin
  AdoVisGeral.Append;
  AdoVisGeral.FieldByName('nome').AsString:= edit1.Text;
  AdoVisGeral.FieldByName('fonction).AsString:= combobox2.Text;
  AdoVisGeral.FieldValues['foto]:= image1.AutoSize;//le probleme s'pose ici!  
  AdoVisGeral.Post;
  end else
  AdoVisGeral.Cancel;

Leader2000,
Merci d'avance.

lundi 18 juin 2007 à 20:47:49 | Re : Mon Timage est-il malade? Que faire?

florenth

Membre Club
Salut !

Ce qui se passe ? C'est simple: tu stockes une valeur dans ton champ 'foto' mais qui n'est qu'une propriété de ton TImage ! La propriété AutoSize en l'occurrence qui vaut True ou False.

Ce que tu dois faire, c'est sauvegarder l'image dans un flux image1.hraphic.savetostream(temp) où temp est un TMemoryStream ou TBlobStream. Et tu sauvegardes ce stream dans ta base de données.

As-tu compris ?

Flo
mardi 19 juin 2007 à 17:40:31 | Re : Mon Timage est-il malade? Que faire?

leader2000

Salut et merci de m'avoir repondu!

J'ai pu essayer le dit code : image1.hraphic.savetostream au de ceci comme avant: image1.AutoSize;

Mais il me fait un bugg.

Merci,
Leader2000

 

mardi 19 juin 2007 à 17:40:42 | Re : Mon Timage est-il malade? Que faire?

leader2000

Salut et merci de m'avoir repondu!

J'ai pu essayer le dit code : image1.hraphic.savetostream au lieu de ceci comme avant: image1.AutoSize;

Mais il me fait un bugg.

Merci,
Leader2000

 

mercredi 20 juin 2007 à 11:28:27 | Re : Mon Timage est-il malade? Que faire?

deldoul35

bonjour
il vaut mieux d'utliser dbimage, mais tout d'abord il faut mettre le type de champ image à 'graph 'dans votre table, ensuite vous ecrivez votre programme
......
AdoVisGeral.Append;
  AdoVisGeral.FieldByName('nome').AsString:= edit1.Text;
  AdoVisGeral.FieldByName('fonction).AsString:= combobox2.Text;
pour le dbimage, la photo s'enregistre automatiquement sans faire une instruction


dalila

mercredi 20 juin 2007 à 12:44:40 | Re : Mon Timage est-il malade? Que faire?

jelume

Voilà un bout de code que j'ais écris récemment.
Il necessite une table avec une colonne pour stocker l'extension du fichier. En faisant ainsi, on peut utiliser un peu plus de formats d'image que ceux supportés par DBImage. Si ça peut vous aider ....
Il faut lui ajouter l'unité pngimage (  [ Lien ] ) pour supporter les png.
On peut aussi utiliser graphicex mais il est buggé pour les png. Du coup je l'ai viré.

unit uImagesEtBD;

interface

uses ADODB, SysUtils, Graphics, classes, DB, jpeg, pngimage;

procedure ChargerImage(Conn: TADOConnection;
  NomTable, NomColID, NomColImage, NomColExtension: string;
  ValeurID: Integer;
  Image: TPicture);

procedure EnregistrerImage(Conn: TADOConnection;
  Fichier: TFileName;
  NomTable, NomColID, NomColImage, NomColExtension: string;
  ValeurID: Integer);overload;

procedure EnregistrerImage(Conn: TADOConnection;
  Image: TPicture; Extension: String;
  NomTable, NomColID, NomColImage, NomColExtension: string;
  ValeurID: Integer);overload;

implementation

procedure EnregistrerImage(Conn: TADOConnection;
  Image: TPicture; Extension: String;
  NomTable, NomColID, NomColImage, NomColExtension: string;
  ValeurID: Integer);overload;
const
  REQ = 'UPDATE %s set %s = :P1, %s = :P2 WHERE %s = %d';
var
  St: TMemoryStream;
begin

  St := TMemoryStream.Create;

  try

    if Assigned(Image) then Image.Graphic.SaveToStream(St);
    St.Position := 0;

    with TADOQuery.Create(nil) do
    begin
      Connection := Conn;
      Close;
      SQL.Text := format(REQ, [NomTable, NomColImage, NomColExtension, NomColID, ValeurID]);
      ParamCheck := True;
      Parameters.ParamByName('P1').LoadFromStream(St, ftBlob);
      Parameters.ParamByName('P2').Value := Extension;
      try
        ExecSQL;
      except
        on E: Exception do
          Raise Exception.CreateFmt('Erreur lors de l''insertion de l''image dans la base de données : %s',
                                    [E.Message]);
      end;
    end;
  Finally
    St.Free;
  end;

end;

procedure EnregistrerImage(Conn: TADOConnection;
  Fichier: TFileName;
  NomTable, NomColID, NomColImage, NomColExtension: string;
  ValeurID: Integer);
const
  REQ = 'UPDATE %s set %s = :P1, %s = :P2 WHERE %s = %d';
var
  St: TMemoryStream;
  Image: TPicture;
begin
  Image := TPicture.Create;
  St    := TMemoryStream.Create;
  try
    Image.LoadFromFile(Fichier);
    EnregistrerImage(Conn, Image, ExtractFileExt(Fichier), Nomtable, NomColID, NomColImage, NomColExtension, ValeurID);
  Finally
    Image.Free;
    St.Free;
  end;

end;

 

procedure ChargerImage(Conn: TADOConnection;
  NomTable, NomColID, NomColImage, NomColExtension: string;
  ValeurID: Integer;
  Image: TPicture);
var
  St: TMemoryStream;
begin

  St := TMemoryStream.Create;
  try
    with TADOTable.Create(nil) do
    begin
      Connection := Conn;
      TableName  := NomTable;
      Open;
      if FieldByName(NomColImage).IsNull then
        Image := nil
      else
      begin
        (FieldByName(NomColImage) as TBlobField).SaveToStream(St);
        St.Position := 0;
        St.SaveToFile('toto' + FieldByname(NomColExtension).AsString);
        Image.LoadFromFile('toto' + FieldByname(NomColExtension).AsString);
        DeleteFile('toto' + FieldByname(NomColExtension).AsString);
      end;

      Close;
      Free;
    end;
  Finally
    St.Free;
  end;
end;

end.



Cette discussion est classée dans : text, fieldbyname, asstring, timage, adovisgeral


Répondre à ce message

Sujets en rapport avec ce message

Pas de modification [ par cmoimeme ] Bonjour, J'ai crée un programme de gestion mais malheureusement j'ai un petit probleme pour la modification, elle ne modifie aucune donnée des champs Comment lié deux logique dans sur seul Tbutton [ par jennybless ] Salut tout le monde!C'est juste une question de curiosité que je pose cette question car je n'arrive pas à dissocier les deux modules que je tiens à f problem avec insert dans DBgrid [ par malraseek ] bonjour j'ai un problem avec l'insertion dans enregistrement dans un dbgrid j'ai utiliser dans le bouton ajouter le code suivant Table1.Last; table1.I romplacer table1.edit [ par malraseek ] Table1.Edit; Table1.FieldByName('Mat').AsString:=Edit1.Text; Table1.FieldByName('Nom').AsString:=Edit2.Text; Table1.FieldByName('Prénom').AsString:=Ed Pourquoi , interdiction d'autres codes de fonctionner. [ par leader2000 ] Salut! Je me pose bien la question de savoir pourquoi après ces codes, aucun autres codes s'executes. Sauf les premiers: /////////////////// Salaire focus window [ par bridoux07 ] bonjour a tous j'ai un soucisj'ai un dbgrid qui recois les infos d'une table article dans l'evenement ondblclick j'ai le code suivantprocedure TF_echa Pomper des données sur des Edits à partir d'une ligne selectionnée d'un DbGrig [ par Lunasoft ] Salut! <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /? erreur ADOQuery1: impossible d'efectuer cette operation sur un ensemble de donnees fermes [ par moacrazy ] bonsoir a tous les delphinautes j'ai un t'it probleme (mais ca je pense que ceux qui lise ce message s'en doutent!!!) je fais une requette sql sur un utilisation de groupbox [ par yosraaa ] salut, j'utilise delphi7 et bd Acess, j'ai un groupbox qui contient 2 Edit, je veux faire l'ajout à la base: voila le code mais ne marche pas , je pe


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2013
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,310 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales