Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #10  
Antiguo 16-12-2005
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 26
maeyanes Va por buen camino
Código Delphi [-]
procedure TfrmFotografias.btnagregarClick(Sender: TObject);
var
  mijpg: TJPEGImage;
  
begin
  if qryMiembros.Active and not qryMiembros.IsEmpty then begin
¿Por qué asignas un valor al parámetro 'cve_rnm' en esta línea si luego vas a limpiar el query?
Código Delphi [-]
    qryInsFoto.ParamByName('cve_rnm').AsString:=
      qryMiembros.FieldByName('cve_rnm').AsString;
En esta parte agregué una cláusula try..finally para proteger la manipulación del objeto mijpg.
Código Delphi [-]
    if OpenPictureDialog1.Execute then begin
      Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
      mijpg := TJPEGImage.Create;
      try // Vamos a proteger la manipulación del objeto mijpg
        mijpg.Assign(Image1.Picture.Graphic);
        if uppercase(copy(ExtractFileExt(OpenPictureDialog1.FileName), 
          1, 3)) <> '.JP' then begin
          mijpg.CompressionQuality:=30;
          mijpg.Compress
        end;
        mijpg.SaveToFile('c:\temp.jpg');
        qryInsFoto.SQL.Clear;
        if qryFotos.IsEmpty then
          qryInsFoto.SQL.Add('insert into fotos (cve_rnm,foto) values ' +
            '(:cve_rnm,:foto)')
        else 
          qryInsFoto.SQL.Add('update fotos set foto=:foto where ' +
            'cve_rnm=:cve_rnm');
        qryInsFoto.ParamByName('cve_rnm').AsString :=
          qryFotos.fieldbyname('cve_rnm').AsString;
        qryInsFoto.ParamByName('foto').LoadFromFile('c:\temp.jpg',ftBlob);
        qryInsFoto.ExecSQL;
      finally
        mijpg.Free // Liberamos el objeto mijpg aun cuando ocurra una excepción
      end;
      qryFotos.Active := false;
      qryFotos.ParamByName('cve_rnm').AsString :=
        qryMiembros.FieldByName('cve_rnm').AsString;
      qryFotos.Active := true;
      if not qryFotos.IsEmpty then begin
        mijpg := TJPEGImage.Create;
        mijpg.Assign(qryFotos.FieldByName('foto'));
        Image1.Picture.Assign(mijpg);
        mijpg.Free
      end
    end
  end
end;
Al código no le veo nada extraño, salvo lo que te comenté más arriba y la cláusula que le agregué.

La qryFotos me imagino que busca si para una persona existe un registro en la tabla de fotos, si es así, solo actualiza la foto, si no, inserta una nueva. Solo verifica que se esté haciendo bien esa búsqueda, por que podría ser que la query siempre resulte vacía por alguna condición mal aplicada y sea por eso que intente insertar una foto nueva para una persona que ya la tiene, con el consiguiente resultado de una violación de clave primaria.


Saludos...
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 14:10:50.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi