Hej! ok... tack! Det är väl SQL variabeln som är deklaread som en sträng så parametern måste konverteras till förslagsvis en integrer hej! Är detta verkligen alla parametrar? Jepp jag ser det.... jag har glömt att ta bort den sista...Update i lagaradeprocedurer
Jag vill använda en updatesats i min lagrade procedur. Problemet jag har är vas skjuter jag in
"where" - värdet
<code>
create procedure CreateContact
@custidnr bigint,
@Contactid bigint
AS
set nocount on
update ContactPerson set
custidnr = @custidnr
where contactid=@contactid
GO
</code>
var i execute commandot skickar jag nu in where värdet
<code>
SQL = & intCustno
Set rst = con.Execute("CreateContact" & SQL)
</code>Sv: Update i lagaradeprocedurer
Nu fårjag ett litet fel
[Microsoft][ODBC SQL Server Driver][SQL Server]Error converting data type nvarchar to bigint.
min kod:
<code>
Set rst = con.Execute("updateContact intCustid, " & SQL)
</code>
i det här fallet så är intCustid deklarerad som long, och i proceduren som bigint. Desamma gäller i databsen. Eftersom det som ligger i SQL satsen är rätt så måste felet bero på intCustid.
Är det någon som vet hur jag kommer runt detta fel?
/phinalaSv: Update i lagaradeprocedurer
<code>Set rst = con.Execute("updateContact intCustid, " & Cint(SQL))
</code>
och har du inte skrivit fel för parametern intCustid så att det ska vara?
<code>Set rst = con.Execute("updateContact " & intCustid & "," & Cint(SQL))
</code>Sv: Update i lagaradeprocedurer
jag har provat även
<code>
Set rst = con.Execute("updateContact " & CLng(intContactid) & "," & SQL)
</code>
intContactid är deklarerad som en long. Nu får jag flemeddelande:
<code>
[Microsoft][ODBC SQL Server Driver][SQL Server]Error converting data type varchar to int.
</code>
Min sql sträng ser ut så här
<code>
2,'FSDF','SDF','sf','dsfsd','sdfds',1,'2004-07-05 15:46:31',1
</code>
så den är rätt format eftersom fält 1, 7,9 är bigint i databasen samt i proceduren.
här är hela koden
<code>
strSplit = Split(Combo1.Text, " - ", 2)
SQL = "" & CLng(strSplit(0)) & ",'" & Trim$(Text1(1)) & "','" & Trim$(Text1(2)) & "','" & Trim$(Text1(3)) & "','" & Trim$(Text1(4)) & "'," & _
"'" & Trim$(Text1(5)) & "'," & CInt(Check1(0).Value) & ",'" & Now & "'," & CInt(Check1(1).Value) & ""
Debug.Print SQL
Set rst = con.Execute("updateContact " & CLng(intContactid) & "," & SQL)
Set rst = Nothing
</code>
här är proceduren
<code>
CREATE procedure UpdateContact
@custidnr bigint,
@fname varchar(30),
@lname varchar(30),
@phone varchar(15),
@mobilephone varchar(15),
@email varchar(50),
@defaultcontact int,
@regtim datetime,
@systememail int,
@contactid bigint
AS
set nocount on
Update ContactPerson set
custidnr = @custidnr,
fname =@fname,
lname = @lname,
phone = @phone,
mobilephone = @mobilephone,
email =@email,
defaultContact = @defaultcontact,
regtim = @regtim,
systememail = @systememail
Where contactid = @contactid
GO
</code>
/phinalaSv: Update i lagaradeprocedurer
<code>2,'FSDF','SDF','sf','dsfsd','sdfds',1,'2004-07-05 15:46:31',1
</code>
dvs 9 stycken, i sp har du dekölarerat 10 stycken.
<code>
@custidnr bigint,
@fname varchar(30),
@lname varchar(30),
@phone varchar(15),
@mobilephone varchar(15),
@email varchar(50),
@defaultcontact int,
@regtim datetime,
@systememail int,
@contactid bigint
</code>
Om contactid inte var deklarerade i den övre koden utan är ett extra argument i koden nedan så ska
följande kod
<code>
Set rst = con.Execute("updateContact " & CLng(intContactid) & "," & SQL)
</code>
vara
<code>
Set rst = con.Execute("updateContact " & SQL & "," & CLng(intContactid) )
</code>
eftersom parametrarna måste komma in i den ordning du deklarerat dem i sp...Sv: Update i lagaradeprocedurer
Ok... det verkar ju logiskt att vända på dem...
Jag skall prova...
Tack jenny så länge!
/phinala