Bonjour,
J'ai la même erreur que charliejo (voir son message ici). Sa réponse ne fonctionne pas dans mon cas.

J'utilise Delphi 7 et j'aimerais exécuter une requête sous PostgreSQL.

  • L'erreur :



  • Ma chaine de connexion est :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
'Provider=PostgreSQL.1;data source=localhost;location=postgres;User ID=postgres;Password=pwd'
  • Ma table est 'toute simple' :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
CREATE TABLE electrical_function_ef
(
  ef_id character varying(11) NOT NULL,
  ef_desc character varying(80) NOT NULL,
  fa_id character varying(20) NOT NULL,
  val character varying(16),
  tol character varying(16),
  CONSTRAINT pk_electrical_function_ef PRIMARY KEY (ef_id)
)
  • Et ma requête est de la forme :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
insert into electrical_function_ef (EF_ID, EF_DESC, FA_ID, VAL, TOL) values ('2603148', '10-497640-025 PCB CONTACT PIN SIZE 20', 'CONN-CIR', '', '')
Celle-ci fonctionne bien lorsque je l'écris sous PostgreSQL.
De plus l'insertion avec Delphi s'effectue quand même malgré l'erreur.

Le problème est que la requête renvoie 0 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 _adoQuery.SQL.Add (....)
count := adoQuery.ExecSQL;
adoQuery.Close;
result := (count = 1);
Le count est égal à 0
(Je suppose donc que les 2 sont liés.

J'ai effectué de nombreuses recherches sur Internet, mais je n'ai trouvé aucune réponse à ce problème pourtant récurent.

Pouvez-vous m'expliquer sa réponse ? Ou me donner un élément de résolution de ce problème ?

Par
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
DRIVER={PostgreSQL};DATABASE=base_dev;SERVER=box1;PORT=5432;UID=user;PWD=pwd;READONLY=0;PROTOCOL=6.4;                    FAKEOIDINDEX=0;SHOWOIDCOLUMN=0;ROWVERSIONING=0;SHOWSYSTEMTABLES=0;CONNSETTINGS=;FETCH=100;SOCKET=4096; UNKNOWNSIZES=0;MAXVARCHARSIZE=254;MAXLONGVARCHARSIZE=8190;DEBUG=0;COMMLOG=0;OPTIMIZER=1;KSQO=1;                             USEDECLAREFETCH=0;TEXTASLONGVARCHAR=1;UNKNOWNSASLONGVARCHAR=0;BOOLSASCHAR=1;PARSE=0;CANCELASFREESTMT=0;EXTRASYSTABLEPREFIXES=dd_;
Je sais pas quel paramètre était nécessaire... mais je n'ai plus le problème.
Merci d'avance,
Bonne journée,
Meloo