Bonjour,

je suis confronté à un problème avec un GridView dont les données proviennent d'une base de donnée Oracle 8i.

J'arrive sans souci à afficher dans le GridView les données de la table.
La difficulté vient lorsqu'il faut éditer ou supprimer une ligne de la grille.

Puisqu'un bout de code vaut mieux qu'un long discours, voici à quoi ressemble le GridView ainsi que le SqlDataSource correspondant.

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
 
<asp:GridView ID="GridView1" runat="server" DataSourceID="sqlds_emp" 
                          AutoGenerateColumns="False" AllowSorting="True"
                          AutoGenerateEditButton="true"  AutoGenerateDeleteButton="true"
                          datakeynames="no" AllowPaging="True" PageSize="5">
                <Columns>
                    <asp:BoundField DataField="no" HeaderText="Numéro" ReadOnly="True" SortExpression="NO" />
                    <asp:BoundField DataField="nom" HeaderText="Nom" SortExpression="NOM" />
                    <asp:BoundField DataField="prenom" HeaderText="Prénom" SortExpression="PRENOM" />
                    <asp:BoundField DataField="dt_entree" HeaderText="Date Entrée" SortExpression="DT_ENTREE" />
                    <asp:BoundField DataField="salaire" HeaderText="Salaire" SortExpression="SALAIRE" />
                </Columns>
            </asp:GridView>
            <asp:SqlDataSource ID="sqlds_emp" runat="server" 
                SelectCommand="SELECT no,nom,prenom,to_char(dt_entree,'DD/MM/YYYY') as dt_entree,salaire FROM e_emp" 
               Updatecommand="UPDATE e_emp SET nom=:nom, prenom=:prenom, salaire=:salaire, dt_entree=:dt_entree WHERE no=:no"
               Deletecommand="DELETE FROM e_emp WHERE no = :no"
               ConnectionString="<%$ ConnectionStrings:msdaora %>"
               ProviderName="<%$ ConnectionStrings:msdaora.ProviderName %>">
            </asp:SqlDataSource>
Lorsque je désire effectuer une mise à jour ou un suppression , je me retrouve avec cette erreur :
ORA-01008: Toutes les variables ne sont pas liées

Je sais que l'erreur provient de la requête SQL dans l'UpdateCommand du SqlDataSource, au moment où je veux récupérer les paramètres de la ligne de la grille. En effet, si j'insère des paramètres "en dur", là, la mise à jour marche :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Updatecommand="UPDATE e_emp SET nom='toto', prenom='tata', salaire=1500, dt_entree='10/10/1992' WHERE no=2"
J'ai également essayé de remplacer les ":" par des "@" (SET nom=@nom) et je me retrouve avec cette erreur :
ORA-00936: Expression absente

J'ai aussi tenté de rajouter des définitions de paramètres pour l'update mais rien n'y fait.

Je suis donc quasiment certain que le problème vient du fait que la base de donnée est Oracle et non SQLServer.

Quelqu'un voit-il où j'ai fait erreur ?

Merci d'avance.