Hello,

J'essaie d'utiliser la fonction ODBC BINDPARAMETER.

Avec un exemple simple d'insertion d'un texte dans le champ LastName j'ai toujours le message "LastName ne peut être une chaine vide" (champ non null).

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
var
sTexte : String;
lTexte : Integer;
pTexte : Pointer;
 
begin
SQLPrepare(hstmt, Pchar('Insert Into Employees(LastName) Values(?)'),SQL_NTS);
sTexte := 'Toto';
lTexte := Length(sTexte);
pTexte := @sTexte;
SQLBindParameter(hstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR, SQL_VARCHAR, lTexte,0, pTexte , 0, iRet);
SQLExecute(hstmt);
Le code est épuré des controles des fonctions ODBC, le retour est toujours OK sauf pour SQLExecute.

lTexte contient bien 4, mais iRet a en retour la valeur 0 et du coup la requête insère un champ Null au lieu de Toto.

Une idée ?

La requete "Insert Into Employees(LastName) Values(?)" fonctionne bien directement sous Access (demande d'un paramètre).

Merci !