Salut à toutes et à tous,

Je cherche depuis un bon moment ce qui ne va pas dans mon code, mais je ne trouve pas, même après avoir lu plusieurs 10aines de sites/posts parlant du sujet, aussi je fais appel à vous.

J'ai une base de donnée PostgreSQL dans laquelle j'ai créé une fonction qui insère une ligne dans 2 tables et me retourne l'ID d'un des éléments créés.
Losque j'exécute la fonction sous postgreSQL, elle me retourne bien le nouvel ID et les éléments sont bien créés.
Tout va donc bien du côté de PostgreSQL.

Dans ma page ASP j'ai un SQLDataSource avec un paramètre ReturnValue pour récupérer le fameux ID retourné par la fonction.
Sur l'event Inserted j'ai un code qui devrait alimenter un champs texte avec le nouvel ID, or e.Command.Parameters["New_ID"].Value me retourne une valeur nulle

Ce qui me chipotte un peu, c'est qu'en PostgreSQL, pour appeler une fonction il faut utiliser un select, et je me demande si le pbl ne viendrait pas de là. Directement dans PostgreSQL j'appelle "SELECT reno_modifsl3_insert_modif_et_lot_lie("TexteAIntroduire", IntegerAIntroduire, NumericAIntroduire)" et il me retourne l'ID.

J'ai donc écris ceci, mais le retour de l'ID a l'air null:
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
 
<asp:SqlDataSource ID="SqlDataSource_Reno_ModifsL3_ModifsParNouvLot"
                                    runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString_ODBC_Topocom %>"
                                    InsertCommandType ="StoredProcedure" 
                                    InsertCommand="SELECT reno_modifsl3_insert_modif_et_lot_lie(?, ?, ?)"
                                   ProviderName="<%$ ConnectionStrings:ConnectionString_ODBC_Topocom.ProviderName %>"
                                    SelectCommand='SELECT topocom."public".reno_modifs_apres_l3.modifl3_id, topocom."public".reno_modifs_apres_l3.modification FROM topocom."public".reno_modifs_apres_l3, topocom."public".reno_nouv_lots_modifs_apres_l3 WHERE topocom."public".reno_modifs_apres_l3.modifl3_id = topocom."public".reno_nouv_lots_modifs_apres_l3.modifl3_id AND (topocom."public".reno_nouv_lots_modifs_apres_l3.num_nouv_lot = ?) ORDER BY topocom."public".reno_modifs_apres_l3.modifl3_id' OnInserted="SqlDataSource_Reno_ModifsL3_ModifsParNouvLot_Inserted">
                                     <SelectParameters>
                                        <asp:ControlParameter ControlID="ListBox_Reno_ModifsL3_Nouv_Lots" Name="?" PropertyName="SelectedValue" />
                                    </SelectParameters>
                                    <InsertParameters>
                                        <asp:ControlParameter ControlID="TextBox_Reno_ModifL3_Description" Name="?" PropertyName="Text" />
                                        <asp:ControlParameter ControlID="TextBox_UserID" Name="?" PropertyName="Text" />
                                        <asp:ControlParameter ControlID="ListBox_Reno_ModifsL3_Nouv_Lots" Name="?" PropertyName="SelectedValue" />
                                        <asp:Parameter Direction="ReturnValue" Name="id_modif" Type="Int32" />
                                    </InsertParameters>
                                </asp:SqlDataSource>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
    protected void SqlDataSource_Reno_ModifsL3_ModifsParNouvLot_Inserted(object sender, SqlDataSourceStatusEventArgs e)
    {
        TextBox_Reno_ModifsL3_modif_id.Text = Server.HtmlEncode(e.Command.Parameters["New_ID"].Value.ToString());
    }
Quelqu'un a-t-il une idée de ce que je dois faire pour récupérer ce de ID ?

Merci de vos z'avis z'avisés,
Jean-Marc