Такая фигня - если процедура возвращает рекордсет, всё понятно.
Но если она возвращает значение внутренней переменной (return @DocID), как это значение выдернуть оттуда?
sParmName = "Param1"
Set ADOPrm = ADOCmd.CreateParameter(sParmName, adChar, adParamInput)
ADOCmd.Parameters.Append ADOPrm
ADOCmd.Parameters(sParmName).Value = "test"
ADOCmd.Parameters.Append ADOPrm
MSDN писал(а):nchar and nvarchar (T-SQL)
Character data types that are either fixed-length (nchar) or variable-length (nvarchar) Unicode data and use the UNICODE UCS-2 character set.
nchar(n)
Fixed-length Unicode character data of n characters. n must be a value from 1 through 4,000. Storage size is two times n bytes. The SQL-92 synonyms for nchar are national char and national character.
nvarchar(n)
Variable-length Unicode character data of n characters. n must be a value from 1 through 4,000. Storage size, in bytes, is two times the number of characters entered. The data entered can be 0 characters in length. The SQL-92 synonyms for nvarchar are national char varying and national character varying.
Remarks
When n is not specified in a data definition or variable declaration statement, the default length is 1. When n is not specified with the CAST function, the default length is 30.
Use nchar when the data entries in a column are expected to be consistently close to the same size.
Use nvarchar when the data entries in a column are expected to vary considerably in size.
SET ANSI_PADDING OFF does not apply to nchar or nvarchar. SET ANSI_PADDING is always ON for nchar and nvarchar.
sParmName = "Comment"
Set ADOPrm = ADOCmd.CreateParameter(sParmName, adBSTR, adParamInput)
ADOCmd.Parameters.Append ADOPrm
ADOCmd.Parameters(sParmName).Value = "test"
sParmName = "Comment"
Set ADOPrm = ADOCmd.CreateParameter(sParmName, adInteger, adParamInput)
ADOCmd.Parameters.Append ADOPrm
ADOCmd.Parameters(sParmName).Value = CStr(1234567890)
Scuder писал(а):Хрень какая-то..
И вообще прикол:
- Код: Выделить всё
sParmName = "Comment"
Set ADOPrm = ADOCmd.CreateParameter(sParmName, adInteger, adParamInput)
ADOCmd.Parameters.Append ADOPrm
ADOCmd.Parameters(sParmName).Value = CStr(1234567890)
В этом случае функция реально получает строку "1234567890"! Обрати внимание на adInteger! И абсолютно не ругается!
Я, кажется, вообще перестаю что-либо понимать в связке VB-ADO-TSQL..
sParmName = "Comment"
Set ADOPrm = ADOCmd.CreateParameter(sParmName, adInteger, adParamInput)
ADOCmd.Parameters.Append ADOPrm
ADOPrm.Value = ......
ATempDB.ConnectionString = "Provider=MSDATASHAPE; Data Provider=SQLOLEDB.1;Password=xxx;Persist Security Info=False;User ID=xxx;Initial Catalog=xxx;Data Source=xxx"
ATempDB.Open
ATempRS.CursorType = adOpenKeyset
ATempRS.LockType = adLockOptimistic
ATempRS.CursorLocation = adUseClient
...unicode-строка "test" возвращается еще раз в unicode, т.е. t*e*s*t*, поэтому у режет. А вот почему оно возвращает так, непонятно.
sParmName = "Comment"
Set ADOPrm = ADOCmd.CreateParameter(sParmName, adBSTR, adParamInput)
ADOCmd.Parameters.Append ADOPrm
ADOCmd.Parameters(sParmName).Size = 250
ADOCmd.Parameters(sParmName).Value = "test"
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1