none
probleme sql data source RRS feed

  • Discussion générale

  • bonjour,

    lorsque je saisie un formulaire, en cliquant sur "mettre a jour" un message d'erreur s'affiche en me montrant une procedure vb.

    " sql data source intervenant_inserted" "paramidintervenant.text =e.command.parameters @identity")value

    en dessous on m'indique aussi, "la conversion du type 'DBNull' en type 'string' n'est pas valide.

    depuis deux jours je cherche et je n'est pas trouvé le probleme.

    y a t'il une personne qui peut m'aider s'il vous plait ?

    voici la fonction que l'on me montre :

    Protected

     

    Sub SqlDataSourceIntervenant_Inserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs) Handles SqlDataSourceIntervenant.Inserted

    ParamidIntervenant.Text = e.Command.Parameters(

    "@Identity").Value

     

    End Sub

    cordialement.

    vendredi 2 avril 2010 09:53

Toutes les réponses

  • Bonjour,

    a priori ta commande insert retourne la valeur DBNull pour le paramètre @Identity. Si il s'agit bien de l'identifiant de l'enregistrement généré as tu vérifié si il était crée en base ? Vérifies ta commande insert définie sur le sqlsdatasource ainsi que les paramètres associés ?

    Si besoin envoi nous ton code ( en utilisant l'option approprié du forum pour plus de lisibilité )

    Cordialement

    vendredi 2 avril 2010 13:51
    Modérateur
  • merci nikho,

    voici mon code :

     

    <asp:DetailsView
        ID="DetailsViewPDP"
        runat="server"
        AutoGenerateRows="False"
        DataSourceID="SqlDataSourcePDP"
        Width="100%" DataKeyNames="idPDP">
        <Fields>
            <asp:TemplateField
                Visible="False">
                <ItemTemplate>
                    <asp:Label
                        runat="server"
                        ID="LabelidDocument"
                        Text='<%# Eval("idDocument") %>' />
                    <asp:Label
                        runat="server"
                        ID="LabelAllowEdit"
                        Text='<%# Eval("AllowEdit") %>' />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField
                HeaderText="Entreprise"
                SortExpression="Nom">
                <InsertItemTemplate>
                    <asp:TextBox
                        ID="IdEntrepriseTextBox"
                        runat="server"
                        Text='<%# Bind("idEntreprise") %>'
                        Visible="false" />
                    <asp:DropDownList
                        ID="DropDownListEntreprise"
                        runat="server"
                        AppendDataBoundItems="true"
                        AutoPostBack="true"
                        DataSourceID="SqlDataSourceEntreprise"
                        DataTextField="Nom"
                        DataValueField="idEntreprise"
                        OnSelectedIndexChanged="DropDownListEntreprise_SelectedIndexChanged"
                        Width="98%">
                        <asp:ListItem>
                        </asp:ListItem>
                    </asp:DropDownList>
                    <asp:RequiredFieldValidator
                        ID="RequiredFieldValidator1"
                        runat="server"
                        ControlToValidate="DropDownListEntreprise"
                        Display="Dynamic"
                        ErrorMessage="Champ obligatoire" />
                </InsertItemTemplate>
                <HeaderStyle
                    Width="180px" />
                <ItemTemplate>
                    <asp:Label
                        ID="Label4"
                        runat="server"
                        Text='<%# Bind("Nom") %>' />
                    <asp:Label
                        ID="LabelIdEntreprise"
                        runat="server"
                        Text='<%# Bind("idEntreprise") %>'
                        Visible="false" />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField
                HeaderText="Numero"
                SortExpression="Numero">
                <EditItemTemplate>
                    <asp:TextBox
                        ID="TextBoxNumero"
                        runat="server"
                        CssClass="textcenter"
                        MaxLength="50"
                        Text='<%# Bind("Numero") %>'
                        Width="80px" />
                    <asp:ImageButton
                        ID="ImageButtonFindNumber"
                        runat="server"
                        OnClick="ImageButtonFindNumber_Click"
                        SkinID="Find"
                        ToolTip="Trouver le numéro automatiquement" />
                </EditItemTemplate>
                <InsertItemTemplate>
                    <asp:TextBox
                        ID="TextBoxNumero"
                        runat="server"
                        CssClass="textcenter"
                        MaxLength="50"
                        Text='<%# Bind("Numero") %>'
                        Width="80px" />
                    <asp:ImageButton
                        ID="ImageButtonFindNumber"
                        runat="server"
                        OnClick="ImageButtonFindNumber_Click"
                        SkinID="Find"
                        ToolTip="Trouver le numéro automatiquement" />
                </InsertItemTemplate>
                <HeaderStyle
                    Width="180px" />
                <ItemTemplate>
                    <asp:Label
                        ID="LabelNumero"
                        runat="server"
                        Text='<%# Bind("Numero") %>'
                        Width="80px" />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField
                HeaderText="Intitule"
                SortExpression="Intitule">
                <EditItemTemplate>
                    <asp:TextBox
                        ID="TextBox2"
                        runat="server"
                        MaxLength="1000"
                        Text='<%# Bind("Intitule") %>' />
                </EditItemTemplate>
                <InsertItemTemplate>
                    <asp:TextBox
                        ID="TextBox2"
                        runat="server"
                        MaxLength="1000"
                        Text='<%# Bind("Intitule") %>'
                        Width="98%" />
                </InsertItemTemplate>
                <HeaderStyle
                    Width="180px" />
                <ItemTemplate>
                    <asp:Label
                        ID="Label2"
                        runat="server"
                        Text='<%# Bind("Intitule") %>'
                        Width="98%" />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField
                HeaderText="Localisation"
                SortExpression="Localisation">
                <ItemStyle
                    Width="90%" />
                <EditItemTemplate>
                    <asp:TextBox
                        ID="IdLocalisationTextBox"
                        runat="server"
                        Text='<%# Bind("idLocalisation") %>'
                        Visible="false" />
                    <asp:DropDownList
                        ID="DropDownListLocalisation"
                        runat="server"
                        BackColor="White"
                        DataSourceID="SqlDataSourceLocalisation"
                        DataTextField="NomLocalisation"
                        DataValueField="idLocalisation"
                        OnSelectedIndexChanged="DropDownListLocalisation_SelectedIndexChanged"
                        Width="98%">
                    </asp:DropDownList>
                </EditItemTemplate>
                <InsertItemTemplate>
                    <asp:TextBox
                        ID="IdLocalisationTextBox"
                        runat="server"
                        Text='<%# Bind("idLocalisation") %>'
                        Visible="false" />
                    <asp:DropDownList
                        ID="DropDownListLocalisation"
                        runat="server"
                        DataSourceID="SqlDataSourceLocalisation"
                        DataTextField="NomLocalisation"
                        DataValueField="idLocalisation"
                        OnSelectedIndexChanged="DropDownListLocalisation_SelectedIndexChanged"
                        Width="98%">
                    </asp:DropDownList>
                </InsertItemTemplate>
                <ItemTemplate>
                    <asp:Label
                        ID="Label4"
                        runat="server"
                        Text='<%# Bind("NomL") %>'
                        Width="98%" />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField
                HeaderText="Signature donneur d'ordre"
                SortExpression="DateSignatureDO">
                <EditItemTemplate>
                    <asp:TextBox
                        ID="TextBox_DateSignatureDO"
                        runat="server"
                        CssClass="textcenter"
                        Text='<%# Bind("DateSignatureDO", "{0:d}") %>'
                        Width="80px" />
                    <asp:ImageButton
                        ID="ImageButton_DateSignatureDO"
                        runat="server"
                        CausesValidation="false"
                        OnClick="ImageButton_Calendar_Click"
                        SkinID="Calendar" />
                    <asp:Panel
                        ID="Panel_DateSignatureDO"
                        runat="server"
                        Visible="false"
                        Width="200px">
                        <div style="margin: 7px">
                            <asp:Calendar
                                ID="Calendar_DateSignatureDO"
                                runat="server"
                                OnSelectionChanged="Calendar_SelectionChanged">
                            </asp:Calendar>
                        </div>
                    </asp:Panel>
                </EditItemTemplate>
                <InsertItemTemplate>
                    <asp:TextBox
                        ID="TextBox_DateSignatureDO"
                        runat="server"
                        CssClass="textcenter"
                        Text='<%# Bind("DateSignatureDO", "{0:d}") %>'
                        Width="80px" />
                    <asp:ImageButton
                        ID="ImageButton_DateSignatureDO"
                        runat="server"
                        CausesValidation="false"
                        OnClick="ImageButton_Calendar_Click"
                        SkinID="Calendar" />
                    <asp:Panel
                        ID="Panel_DateSignatureDO"
                        runat="server"
                        Visible="false"
                        Width="200px">
                        <div style="margin: 7px">
                            <asp:Calendar
                                ID="Calendar_DateSignatureDO"
                                runat="server"
                                OnSelectionChanged="Calendar_SelectionChanged">
                            </asp:Calendar>
                        </div>
                    </asp:Panel>
                </InsertItemTemplate>
                <HeaderStyle
                    Width="180px" />
                <ItemTemplate>
                    <asp:Label
                        ID="Label5"
                        runat="server"
                        Text='<%# Bind("DateSignatureDO", "{0:d}") %>' />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField
                HeaderText="Signature entreprise exterieure"
                SortExpression="DateSignatureEE">
                <EditItemTemplate>
                    <asp:TextBox
                        ID="TextBox_DateSignatureEE"
                        runat="server"
                        CssClass="textcenter"
                        Text='<%# Bind("DateSignatureEE", "{0:d}") %>'
                        Width="80px" />
                    <asp:ImageButton
                        ID="ImageButton_DateSignatureEE"
                        runat="server"
                        CausesValidation="false"
                        OnClick="ImageButton_Calendar_Click"
                        SkinID="Calendar" />
                    <asp:Panel
                        ID="Panel_DateSignatureEE"
                        runat="server"
                        Visible="false"
                        Width="200px">
                        <div style="margin: 7px">
                            <asp:Calendar
                                ID="Calendar_DateSignatureEE"
                                runat="server"
                                OnSelectionChanged="Calendar_SelectionChanged">
                            </asp:Calendar>
                        </div>
                    </asp:Panel>
                </EditItemTemplate>
                <InsertItemTemplate>
                    <asp:TextBox
                        ID="TextBox_DateSignatureEE"
                        runat="server"
                        CssClass="textcenter"
                        Text='<%# Bind("DateSignatureEE", "{0:d}") %>'
                        Width="80px" />
                    <asp:ImageButton
                        ID="ImageButton_DateSignatureEE"
                        runat="server"
                        CausesValidation="false"
                        OnClick="ImageButton_Calendar_Click"
                        SkinID="Calendar" />
                    <asp:Panel
                        ID="Panel_DateSignatureEE"
                        runat="server"
                        Visible="false"
                        Width="200px">
                        <div style="margin: 7px">
                            <asp:Calendar
                                ID="Calendar_DateSignatureEE"
                                runat="server"
                                OnSelectionChanged="Calendar_SelectionChanged">
                            </asp:Calendar>
                        </div>
                    </asp:Panel>
                </InsertItemTemplate>
                <HeaderStyle
                    Width="180px" />
                <ItemTemplate>
                    <asp:Label
                        ID="Label6"
                        runat="server"
                        Text='<%# Bind("DateSignatureEE", "{0:d}") %>' />
                </ItemTemplate>
            </asp:TemplateField>
        </Fields>
    </asp:DetailsView>
    <asp:Panel
        ID="PanelI"
        Width="100%"
        runat="server"
        Visible="false">
        <br />
        <table width="100%">
            <tr>
                <td style="text-align: center">
                    <asp:LinkButton
                        Text="Enregistrer et compléter"
                        runat="server"
                        ID="LinkButtonINsertAndEdit" /></td>
            </tr>
        </table>
    </asp:Panel>
    <asp:Panel
        Width="100%"
        runat="server"
        ID="PanelRW"
        Visible="false">
        <br />
        <asp:Panel
            Width="100%"
            ID="Panel2"
            runat="server"
            GroupingText="Intervenants soumis au plan de prévention">
            <div class="panelcontent">
                <uc:IntervenantPDP
                    ID="IntervenantPDPUC"
                    runat="server" />
            </div>
        </asp:Panel>
        <br />
        <uc:AvenantPDP
            ID="AvenantPDPUC"
            runat="server" />
        <br />
        <uc:Document
            ID="DocumentUC"
            runat="server" />
    </asp:Panel>
    <asp:SqlDataSource
        ID="SqlDataSourcePDP"
        runat="server"
        ConnectionString="<%$ ConnectionStrings:PDP %>"
        DeleteCommand="DELETE FROM [PDP] WHERE [idPDP] = @idPDP"
        InsertCommand="INSERT INTO [PDP] ([idDocument], [idEntreprise], [IdLocalisation], [Numero], [Intitule], [DateSignatureDO],[DateSignatureEE]) VALUES (@idDocument, @idEntreprise, @IdLocalisation, @Numero, @Intitule,@DateSignatureDO,@DateSignatureEE) SET @Identity = @@Identity"
        OnInserted="SqlDataSourcePDP_Inserted"
        OnInserting="SqlDataSourcePDP_Inserting"
        SelectCommand="SELECT PDP.idPDP, PDP.idDocument, PDP.Numero, PDP.Intitule,  PDP.DateSignatureDO, PDP.DateSignatureEE, PDP.idEntreprise, PDP.IdFonction, Localisation.NomLocalisation, Entreprise.Nom, CAST(1 AS bit) AS AllowEdit FROM DonneurOrdreCommande INNER JOIN Commande ON DonneurOrdreCommande.idCommande = Commande.idCommande RIGHT OUTER JOIN PDP INNER JOIN Localisation ON PDP.IdLocalisation = Localisation.IdLocalisation INNER JOIN Entreprise ON PDP.idEntreprise = Entreprise.idEntreprise   ON Commande.idPDP = PDP.idPDP WHERE (PDP.idPDP = @idPDP) AND (DonneurOrdreCommande.idDonneurOrdre = @UserID) OR (PDP.idPDP = @idPDP) AND (DonneurOrdreCommande.idDonneurOrdre IS NULL) AND (@UserID &gt;= 0) OR (PDP.idPDP = @idPDP) AND (@UserID = 0) UNION SELECT PDP_1.idPDP, PDP_1.idDocument, PDP_1.Numero, PDP_1.Intitule, PDP_1.DateSignatureDO, PDP_1.DateSignatureEE, PDP_1.idEntreprise, Entreprise_1.Nom,PDP_1.IdLocalisation, Localisation_1.NomLocalisation, CAST(0 AS bit) AS AllowEdit FROM PDP AS PDP_1 INNER JOIN Entreprise AS Entreprise_1 ON PDP_1.idEntreprise = Entreprise_1.idEntreprise INNER JOIN LOCALISATION AS Entreprise_1 ON PDP_1.IdLocalisation = Localisation_1.IdLocalisation INNER JOIN Commande AS Commande_1 ON PDP_1.idPDP = Commande_1.idPDP INNER JOIN DonneurOrdreCommande AS DonneurOrdreCommande_1 ON Commande_1.idCommande = DonneurOrdreCommande_1.idCommande WHERE (PDP_1.idPDP = @idPDP) AND (DonneurOrdreCommande_1.idDonneurOrdre &lt;&gt; @UserID) AND (NOT (DonneurOrdreCommande_1.idDonneurOrdre IS NULL)) AND (@UserID &lt;&gt; 0) OR (PDP_1.idPDP = @idPDP) AND (@UserID &lt; 0)"
        
        UpdateCommand="UPDATE [PDP] SET [idEntreprise] = @idEntreprise, [IdLocalisation] = @IdLocalisation, [Numero] = @Numero, [Intitule] = @Intitule, [DateSignatureDO] = @DateSignatureDO, [DateSignatureEE] = @DateSignatureEE WHERE [idPDP] = @idPDP">
        <DeleteParameters>
            <asp:Parameter
                Name="idPDP"
                Type="Int32" />
        </DeleteParameters>
        <UpdateParameters>
            <asp:Parameter
                Name="idEntreprise"
                Type="Int32" />
            <asp:Parameter
                Name="IdLocalisation" 
                Type="Int32" />
            <asp:Parameter
                Name="Numero"
                Type="Int32" />
            <asp:Parameter
                Name="Intitule"
                Type="String" />
            <asp:Parameter
                Name="DateSignatureDO"
                Type="DateTime" />
            <asp:Parameter
                Name="DateSignatureEE"
                Type="DateTime" />
            <asp:Parameter
                Name="idPDP"
                Type="Int32" />
        </UpdateParameters>
        <InsertParameters>
            <asp:Parameter
                Name="idDocument"
                Type="Int32" />
            <asp:Parameter
                Name="idEntreprise"
                Type="Int32" />
            <asp:Parameter
                Name="IdLocalisation" 
                Type="Int32" />
            <asp:Parameter
                Name="Numero"
                Type="Int32" />
            <asp:Parameter
                Name="Intitule"
                Type="String" />
            <asp:Parameter
                Name="DateSignatureDO"
                Type="DateTime" />
            <asp:Parameter
                Name="DateSignatureEE"
                Type="DateTime" />
            <asp:Parameter
                Name="Identity" />
        </InsertParameters>
        <SelectParameters>
            <asp:ControlParameter
                ControlID="ParamidPDP"
                DefaultValue="-1"
                Name="idPDP"
                PropertyName="Text"
                Type="Int32" />
            <asp:SessionParameter
                Name="UserID"
                SessionField="UserID"
                DefaultValue="-1" />
        </SelectParameters>
    </asp:SqlDataSource>
    <asp:SqlDataSource
        ID="SqlDataSourceEntreprise"
        runat="server"
        ConnectionString="<%$ ConnectionStrings:PDP %>"
        SelectCommand="SELECT [Nom], [idEntreprise] FROM [Entreprise] ORDER BY [Nom]">
    </asp:SqlDataSource>
    <asp:SqlDataSource ID="SqlDataSourceLocalisation" runat="server" 
        ConnectionString="<%$ ConnectionStrings:PDP %>" 
        SelectCommand="SELECT IdLocalisation, NomLocalisation FROM Localisation ORDER BY NomLocalisation">
    </asp:SqlDataSource>

     

    cordialement

    vendredi 2 avril 2010 14:22
  • Essai de rajouter des ";" sur la commande InsertCommand :

    ....,@DateSignatureEE); SET @Identity = @@Identity;
    vendredi 2 avril 2010 15:43
    Modérateur
  • bonjour,

    nikho j'ai réalisé la modification que vous m'avez conseillé de faire,

    j'ai toujours le meme message d'erreur, de plus dans la liste des erreurs on m'indique, "le nom modules_pdp n'est pas déclaré" ensuite on m'indique "type 'asp.modules_intervenantpdp_ascx non défini.

    peut tu m'aider s'il te plait ?

    voici la parti de code ou j'ai réalisé les changements que tu m'a conseillé :

    ConnectionString

     

    ="<%$ ConnectionStrings:PDP %>"

     

    InsertCommand="INSERT INTO [Intervenant] ([idEntreprise], [IdFonction], [Nom], [Prenom], [Adresse], [Telephone]) VALUES (@idEntreprise, @IdFonction, @Nom, @Prenom, @Adresse, @Telephone); SET @Identity = @@Identity;"

     

    SelectCommand="SELECT P.idIntervenant , P.Nom , P.Prenom , P.Adresse , P.Telephone, E.idEntreprise, E.Nom as Nom, F.IdFonction, F.NomFonction as NomF FROM Intervenant AS P INNER JOIN Entreprise AS E ON P.idEntreprise = E.idEntreprise INNER JOIN FONCTION AS F ON P.IDFONCTION= F.IdFonction WHERE (P.idIntervenant = @idIntervenant)"

     

    UpdateCommand="UPDATE Intervenant SET idEntreprise = @idEntreprise,IdFonction=@IdFonction, Nom = @Nom, Prenom = @Prenom, Adresse = @Adresse, Telephone = @Telephone WHERE idIntervenant = @idIntervenant">

     

    <UpdateParameters>

    merci de ton aide nikho

    cordialement

    mardi 6 avril 2010 12:39
  • Bonjour,

    Pouvez-vous localiser dans le code la ligne qui utilise ‘modules_pdp’ ? La meme chose pour ‘asp.modules_intervenantpdp_ascx’, je ne comprends pas de quel type s’agit-il.

     

    Cordialement,

    Alex


    Alex Petrescu - MSFT
    mercredi 7 avril 2010 11:43
  • bonjour,

    aucune ligne utilise le modules_pdp, par contre pour le asp.modules_intervenant

    c'est la premiere ligne de mon code :

    <%

    @ Control Language="VB" AutoEventWireup="false" CodeFile="Intervenant.ascx.vb" Inherits="Modules_Intervenant" %

    cordialement.

    mercredi 7 avril 2010 15:04
  • Bonjour,

     

    Avez-vous défini une classe Modules_Intervenant ? Il semble que vous avez dans votre application une classe modules_pdp que vous utilisez sans l’avoir défini. Il faut trouver la partie du code ou vous utilisez cette classe et la definir proprement.

     

    Cordialement,

    Alex


    Alex Petrescu - MSFT
    jeudi 8 avril 2010 07:50