Bonjour,
Mon souci est que j'arrive à récupérer et à afficher les données depuis une base de données PostgreSQL mais pas à les modifier. Voici le code utilisé :
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
 
procedure TMainForm.BtTestClick( Sender : TObject) ;
var
  _SQLCon    : TPQConnection;
  _SQLTrs     : TSQLTransaction;
  _SQLQuery : TSQLQuery;
  tampon      : String;
begin
  // Initialise la connection
  _SQLCon    := TPQConnection.Create(nil);
  _SQLCon.DatabaseName := 'DB_MOSAIC';
  _SQLCon.HostName     := '192.168.0.12';         <----- Acces distant autorisé
  _SQLCon.UserName     := 'postgres';
  _SQLCon.Password     :=  'motdepasse';
  //Ouvre la connection
  try
    _SQLCon.Connected := True;
  except
    on e:EDatabaseError do begin
      Erreur('Connection impossible.'+#13#10+e.Message);
      _SQLCon.Free;
      exit;
    end;
  end;
 
  // Lier les objets
  _SQLTrs          := TSQLTransaction.Create(_SQLCon);   <------ Cela est il permis?
  _SQLTrs.DataBase := _SQLCon;
 
  _SQLQuery             := TSQLQuery.Create(_SQLCon);    <------ Cela est il permis?
  _SQLQuery.DataBase    := _SQLCon;
  _SQLQuery.Transaction := _SQLTrs;
 
  // Injecte et execute la requete SQL
  try
    _SQLCon.ExecuteDirect('insert into bpartner(bprnum, bprnam) values(''SALIM'',''TEST Lazarus'');');
  except
    on e:EDatabaseError do begin
      Erreur('Erreur reqête SQL.'+#13#10+e.Message);
      _SQLCon.Free;
      exit;
    end;
  end;
 
  _SQLCon.Free;
end;
Le code me semble bon car il fonctionne sur une BDD MySQL. Je dois sans doute avoir loupé quelque chose.

OS : Linux 3.2.0-4-686-pae #1 SMP Debian 3.2.54-2 i686 GNU/Linux
Lazarus : Version 1.2.0
PostgreSQL : Version 9.1.1.2

La structure de table a été simplifiée pour les besoins du test :
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
 
-- Table: bpartner
 
-- DROP TABLE bpartner;
 
CREATE TABLE bpartner
(
  bprnum character varying(10) NOT NULL,
  bprnam character(35) NOT NULL,
  CONSTRAINT pkd_bpartner PRIMARY KEY (bprnum )
)
WITH (
  OIDS=FALSE
);
ALTER TABLE bpartner
  OWNER TO postgres;
GRANT ALL ON TABLE bpartner TO postgres WITH GRANT OPTION;
Je préfère utiliser PosqtgreSQL mais sinon je me rabattrais sur MySQL. Mais j'aimerais bien savoir ce qui se passe.

Merci à tous.
Salim