2

ユーザーが報告できるフォームがあります。asp と SQL ストアド プロシージャを使用して実行しようとしていますが、動作しません。

どんな助けでも大歓迎です!

これは asp/vb です:

Dim insertVictim__firstName
insertVictim__firstName = null
if(Request.form("firstName") <> "") then insertVictim__firstName = Request.form("firstName")

Dim insertVictim__surName
insertVictim__surName = null
if(Request.form("surName") <> "") then insertVictim__surName = Request.form("surName")

Dim insertVictim__Gender
insertVictim__Gender = null
if(Request.form("Gender") <> "") then insertVictim__Gender = Request.form("Gender")

Dim insertVictim__DOB
insertVictim__DOB = null
if(Request.form("DOB") <> "") then insertVictim__DOB = Request.form("DOB")

set insertVictim = Server.CreateObject("ADODB.Command")
insertVictim.ActiveConnection = MM_SecurityReporting_STRING
insertVictim.CommandText = "dbo.sp_insertIntoVictim"
insertVictim.Parameters.Append insertVictim.CreateParameter("@firstName", 200, 1,20,insertIncident__firstName)
insertVictim.Parameters.Append insertVictim.CreateParameter("@surName", 200, 1,20,insertIncident__surName)
insertVictim.Parameters.Append insertVictim.CreateParameter("@Gender", 200, 1,20,insertIncident__Gender)
insertVictim.Parameters.Append insertVictim.CreateParameter("@DOB", 200, 1,20,insertIncident__DOB)
insertVictim.CommandType = 4
insertVictim.CommandTimeout = 0
insertVictim.Prepared = true
insertVictim.Execute()

これは SQL ストアド プロシージャです。

USE [SecurityReporting]
GO
/****** Object:  StoredProcedure [dbo].[sp_insertIntoVictim]    Script Date: 07/08/2013 16:59:14 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:      <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[sp_insertIntoVictim]
    -- Add the parameters for the stored procedure here
    @firstName varchar(20),
    @surName varchar(20),
    @Gender varchar(20),
    @DOB varchar(20)
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    insert into tbl_victim (firstName, surName, Gender, DOB)
    values (@firstName, @surName, @Gender, @DOB)

END
4

2 に答える 2

0

回答スペースを使いたくないのですが、まだ投稿にコメントできません。最初に、日付データ型に関する Dan Bracuk のコメントを繰り返したいと思います。そのようなことは、私に不必要な悲しみを与えました。

また、SQL Profiler を使用することをお勧めします。このような状況では、それはあなたの親友です。SSMS からプロファイラーを起動し、トレースの設定で、データベース名、さらにはログインまたはユーザーでフィルター処理して、表示されるものを自分/アプリケーションと指定されたデータベース間の相互作用のみに減らすことができます。

アプリケーションを実行し、挿入を試みます。プロファイラーで結果を表示します。渡された情報が表示されるので、データ型の不一致や、ストアド プロシージャによって送信され、使用されている値にその他の問題があるかどうかを確認できます。

何も表示されない場合は、少なくとも、アプリケーションが SQL Server にまったくアクセスしていないことがわかります。ただし、おそらく接続しているように見えますが、挿入が失敗する原因となる値に問題があります。トレースで結果が得られた場合は、SP が実行された結果行を選択し、その結果の本文をコピーします。次に、それを SSMS の [新しいクエリ] ウィンドウに貼り付け、手動で実行したときにどのようなメッセージが表示されるかを確認します。

これがお役に立てば幸いです。Profiler が私を瀬戸際から救ってくれたことは数え切れないほどあります。幸運を。

于 2013-07-08T19:54:27.730 に答える