سؤال

أحاول حاليًا تشغيل إجراء معين (SQL 2005) في VB6 ، ويمرر بعض المعلمات:

Dim conn As Connection
Set conn = New Connection
conn.Open "Provider=whateverprovider;Data Source=whateversource;Database=whateverdatabase;User Id=whateverID;Password=whatever"
Dim CMD As ADODB.Command
Dim rs As ADODB.Recordset
Set CMD = New ADODB.Command
Set CMD.ActiveConnection = conn
CMD.CommandType = adCmdStoredProc
CMD.Parameters.Append CMD.CreateParameter("@EmpresaCNPJ", adVarChar, adParamInput, 14, "64687015000152")
CMD.Parameters.Append CMD.CreateParameter("@EntradaSaida", adChar, adParamInput, 1, "S")
CMD.Parameters.Append CMD.CreateParameter("@Participante", adVarChar, adParamInput, 60, "0000000020")
CMD.Parameters.Append CMD.CreateParameter("@nroNotaFiscal", adInteger, adParamInput)
CMD.Parameters("@nroNotaFiscal").Value = 2289
CMD.Parameters.Append CMD.CreateParameter("@serieNotaFiscal", adSmallInt, adParamInput)
CMD.Parameters("@serieNotaFiscal").Value = 1
Set rs = CMD.Execute

في السطر الأخير ، أحصل على رسالة الخطأ التالية:

alt text http://dl.dropbox.com/u/3045472/erro.png

التي تقرأ باللغة الإنجليزية: "خطأ في بناء الجملة أو انتهاك الوصول"

هذه الرسالة عامة حقًا ، وليس لدي أدنى فكرة عن أين يمكن أن تكون المشكلة.

أي خطأ ارتكبت ؟

فيما يلي المعلمة التي تلقيها جزءًا من رمز SQL في الإجراء:

   @EmpresaCNPJ varchar(14), 
   @EntradaSaida char(1)=null, 
   @Participante varchar(60)=null, 
   @nroNotaFiscal int=null, 
   @serieNotaFiscal smallint=null, 
   @EtapaInicial tinyint=null, 
   @LineComplement varchar(255)=null 

قيل لي إنه لا ينبغي تمرير كل معلمة ، وأنه يجب أن يعمل مع خمسة فقط (من أصل سبعة).

هل كانت مفيدة؟

المحلول

أين تقوم بتعيين اسم الإجراء المخزن؟
cmd.CommandName = ....

تحرير: اضبط CommandName إلى اسم الإجراء المخزن ، قبل البدء في الاتصال Parameters.Append

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top