Je récupère l'identité scope_identity d'une entrée db, et je souhaite utiliser cette variable dans un autre SqlDataSource, principalement en tant que mais je suis incapable d'accéder à la variable. J'ai la variable affichée dans un msgbox, et il affiche correctement, je ne suis pas sûr comment y accéder dans le SqlDataSource. Voici mon code;Utilisation du paramètre de sortie dans SqlDataSource
Ceci est la source de données qui insère la première information et a reçu la portée_identité, ainsi que l'événement _inserted; code:
<asp:SqlDataSource ID="InsertPatientInfo" runat="server" ConnectionString="<%$ ConnectionStrings:DataConnectionString %>"
providername="<%$ ConnectionStrings:DataConnectionString.ProviderName %>"
InsertCommandType="StoredProcedure"
InsertCommand = "InsertPatInfo"
OnInserted="InsertPatientInfo_Inserted">
<InsertParameters>
<asp:ControlParameter ControlID = "PatInfoName" Name="PatName" PropertyName="text"/>
<asp:ControlParameter ControlID = "PatInfoAge" Name="PatAge" PropertyName="text" />
<asp:ControlParameter ControlID = "PatInfoState" Name="PatState" PropertyName="selectedvalue" />
<asp:ControlParameter ControlID = "PatInfoCountry" Name="PatCountry" PropertyName="selectedvalue" />
<asp:ControlParameter ControlID = "PatInfoPhone" Name="PatPhone" PropertyName = "text" />
<asp:ControlParameter ControlID = "PatInfoCell" Name="PatCell" PropertyName="Text" />
<asp:Parameter DbType="Int32" Direction="Output" Name="PatID" />
</InsertParameters>
Protected Sub InsertPatientInfo_Inserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs) Handles InsertPatientInfo.Inserted
Dim PatID As String = e.Command.Parameters("@PatID").Value
MsgBox(PatID, MsgBoxStyle.Critical)
End Sub
Voici l'appel à la prochaine SqlDataSource, avec InsertCommand inclus, je prévois de passer à une procédure stockée une fois que je le faire fonctionner; Je continue à obtenir l'erreur, que le scalaire varaible @PatID n'est pas défini, suis-je censé le déclarer comme un et si oui, quel type? code:
<asp:SqlDataSource ID="InsInqInfo" runat="server" ConnectionString="<%$ ConnectionStrings:DataConnectionString %>"
providerName="<%$ ConnectionStrings:DataConnectionString.ProviderName %>"
InsertCommand = "Insert into tblInquirer(InqPatID, InqName, InqState, InqCountry, InqPhone, InqRelation, InqVia, InqCareLevel, InqProgram) VALUES
(@PatID, @InqName, @InqState, @InqCountry, @InqPhone, @InqRelation, @InqVia, @InqCareLevel, @InqProgram)"
<InsertParameters>
<asp:ControlParameter ControlID = "InqName" Name="InqName" PropertyName="text"/>
<asp:ControlParameter ControlID = "InqStateList" Name="InqState" PropertyName="selectedvalue" />
<asp:ControlParameter ControlID = "InqCountry" Name="InqCountry" PropertyName="selectedvalue" />
<asp:ControlParameter ControlID = "InqPhone" Name="InqPhone" PropertyName="Text" />
<asp:ControlParameter ControlID = "radInqRel" Name="InqRelation" PropertyName="selectedvalue" />
<asp:ControlParameter ControlID = "InitInqVia" Name="InqVia" PropertyName = "selectedvalue" />
<asp:ControlParameter ControlID = "CareLevel" Name="InqCareLevel" PropertyName="selectedvalue" />
<asp:ControlParameter ControlID = "ProgSelect" Name="InqProgram" PropertyName="selectedvalue" />
</InsertParameters>
Merci à l'avance, Nick
Je suis passé par ce tutoriel et je crois que mon code est exactement en ressemblance avec le sien. Le problème est que je ne peux pas accéder à mon @PatID en dehors de l'événement .inserted. Je l'ai mis dans le msgbox() et il affiche l'ID correct, mais je suis incapable de l'utiliser comme un avec une SqlDataSource différente, donc je peux l'utiliser comme une clé relationnelle dans une autre table de base de données. Est-ce qu'il y a un moyen de faire ça? –