2017-02-23 4 views
0

ADODBライブラリ(Microsoft ActiveX Data Objects 6.1ライブラリ)を使用してVB.NETからストアドプロシージャを呼び出す際に、小さな問題が発生します。VB.NETからストアドプロシージャをエラーなしで呼び出しても、何も起こりません。

私は次のストアドプロシージャ(MySQLのからのコピー)を持っている:

USE [DAB_Eindopdracht_DAB-TH] 
GO 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

ALTER PROCEDURE [dbo].[spAlterTypeVermogen] 

@strModel as varchar(30), 
@strType as varchar(30), 
@intVermogen as int 
AS 
BEGIN 
SET NOCOUNT ON; 

DECLARE @inttblTypeID int 
DECLARE @inttblModelID int 
DECLARE @inttblModelTypeID int 
SET @inttblTypeID = (SELECT ID FROM tblType WHERE strNaam = @strType) 
SET @inttblModelID = (SELECT ID FROM tblModel WHERE strNaam = @strModel) 
SET @inttblModelTypeID = (SELECT ID FROM tblModelType WHERE typeID = @inttblTypeID AND modelID = @inttblModelID) 

-- Update QUERY 
UPDATE tblModelType 
SET intVermogen = @intVermogen 
WHERE ID = @inttblModelTypeID 
END 

はその後、私のVBのコードで私は、次のコードを使用してこのストアドプロシージャを呼び出す:

Public Sub changeTypeVermogen(ByVal intVermogen As Int16, ByVal strType As String, ByVal strModel As String) 
    Dim cmdData As New ADODB.Command 

    cmdData.CommandText = "spAlterTypeVermogen" 
    cmdData.CommandType = ADODB.CommandTypeEnum.adCmdStoredProc 
    cmdData.Parameters.Append(cmdData.CreateParameter("strModel", ADODB.DataTypeEnum.adVarChar, ADODB.ParameterDirectionEnum.adParamInput, 30)) 
    cmdData.Parameters.Append(cmdData.CreateParameter("strType", ADODB.DataTypeEnum.adVarChar, ADODB.ParameterDirectionEnum.adParamInput, 30)) 
    cmdData.Parameters.Append(cmdData.CreateParameter("intVermogen", ADODB.DataTypeEnum.adInteger, ADODB.ParameterDirectionEnum.adParamInput)) 

    connOpen() 

    cmdData.ActiveConnection = cnnDatabase 
    cmdData.Parameters(0).Value = strModel 
    cmdData.Parameters(1).Value = strType 
    cmdData.Parameters(2).Value = intVermogen 
    cmdData.Execute() 

    connClose() 
end sub 

今私の問題は、ということです私はこのストアドプロシージャをMySQLから実行すると、絶対にうまく動作します。

しかし、VBアプリケーションからこのプロシージャを呼び出すと、何も起こりません。 これは私の方法で実行され、エラーはまったく発生しませんが、データベースのデータも変更されません。 私は自分の変数の値をチェックしており、実際のデータベースに入っています。つまり、クエリを完全に終了できるはずです。

何も起こらない理由を私に説明できる人はいますか? (そしてエラーは出ない)。 何か間違っていますか?何か不足していますか? ありがとうございます!

+3

MySQLやSQL Serverの@を必要とします! – DavidG

+2

これはSQL Serverのように見えますが、あなたはMySqlであると述べています。まず、実際に使用しているDBMSを特定する必要があります。 –

+0

何も変わっていない理由は、更新ステートメントの条件を満たす行がないためです。複数の変数の代わりに結合を使用することで、更新を大幅に簡素化できます。 –

答えて

0

あなたは、パラメータ名

cmdData.CreateParameter("@strModel"..... 
関連する問題