當前位置:首頁 » 存儲配置 » vb調用sql存儲過程

vb調用sql存儲過程

發布時間: 2022-07-24 10:58:03

Ⅰ 如何在VB中調用並運行sql的儲存過程

我給你兩種簡單的方法:
1.
過程
CREATE
PROCEDURE
cyPFindWaitExecSO
----按貨品編碼查出沒有執行銷售訂單(不包括
CANCEL
作廢,
stoped
中止)
@GOODSCODE
VARCHAR(100)
AS
SELECT
SO.WDATE,so.BILLCODE,a.QTY,a.EXEQTY,a.QTY-a.EXEQTY
WaitExec,c.CLIENTNO,a.USERDEF1
FROM
(SELECT
*
FROM
S_ORDERd
WHERE
EXEQTY<
qty
AND
STOPED=0
AND
canceled=0
AND
GOODSID=
(SELECT
GOODSID
FROM
GOODS
g
WHERE
CODE
=
@GOODSCODE))AS
a
LEFT
JOIN
S_ORDER
so
ON
so.BILLID=
A.BILLID
LEFT
JOIN
CLIENT
c
ON
c.CLIENTID=so.CLIENTID
調用
cyPFindWaitExecSO是一個查詢存儲過程,
GOODSCODE
是一個參數
Tsql
=
"exec
cyPFindWaitExecSO
'"
&
goodscode
&
"'"
Rs.Open
Tsql,
DBcn1
cyPFindWaitExecSO是一個查詢存儲過程,
GOODSCODE
是一個參數
2.
過程
CREATE
PROC
ConfirmIDcardUsering
@card_id
NVARCHAR(16),
@emp_id
NVARCHAR(12),
@outStr
NVARCHAR(50)
OUTPUT
AS
IF
EXISTS(SELECT
Etime
FROM
KQID
k
WHERE
k.card_id=@card_id
AND
etime
IS
NULL)
SET
@outStr
=
'卡在正常使用中'
ELSE
if
exists(SELECT
Etime
FROM
KQID
k
WHERE
k.emp_id=
@emp_id
AND
etime
IS
NULL)
SET
@outStr
=
'該員工已有卡在用'
else
SET
@outStr=
''
GO
調用:
Set
Cmd
=
New
ADODB.Command
With
Cmd
.ActiveConnection
=
dbcn
'數據連接字元串
.CommandType
=
4
.CommandText
=
"ConfirmIDcardUsering"
'過程名'
.Parameters.Item("@card_id").Value
=
Card_id
'參數一'
.Parameters.Item("@emp_id").Value
=
emp_id
'參數二'
.Execute
TestS
=
.Parameters.Item("@outStr").Value
'反回的函數'
End
With
Set
Cmd
=
Nothing

Ⅱ VS2008環境下VB調用SQL存儲過程

樓上同學沒理解樓主的問題.

給參考代碼:

SqlConnection conndb= new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
conndb.Open();

SqlDataAdapter strselect = new SqlDataAdapter("存儲過程的名字",conndb);

strselect.SelectCommand.CommandType = CommandType.StoredProcere;

DataSet ds = new DataSet();

strselect.Fill(ds);

DlstBuycatalog.DataSource =ds;

DlstBuycatalog.DataBind();

conndb.Close();

Ⅲ VB 調用SQL存儲過程問題

感覺將所有字元串一起傳到sqlServer中,在存儲過程中進行處理比較好,而不是將執行sql存儲過程放在一個循環里

Ⅳ VB中ADODB的Connection對象Execute方法調用SQL存儲過程方法

Set adoRs = adoConn.Execute("exec Book_SelectName 'sqlarg'")
改為
Set adoRs = adoConn.Execute("exec Book_SelectName '" & sqlArg & "'")

Ⅳ VB 調用SQL SERVER 存儲過程

'引用Microsoft ActiveX Data Objects 2.8 Library
Dim Cnn As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim Cnn_c As New ADODB.Command
Dim cnn_p As ADODB.Parameter
Set Cnn = New ADODB.Connection
Set Rs = New ADODB.Recordset
'On Error Resume Next
Cnn.ConnectionString = ConnStr '連接字元串
With Cnn
.CursorLocation = adUseClient
.Open '連接
End With
Set Cnn_c.ActiveConnection = Cnn
With Cnn_c
.CommandType = adCmdStoredProc '命令類型:存儲過程
.CommandText = "AA" '存儲過程名
End With
Set cnn_p = Cnn_c.CreateParameter("ReTurn", adInteger, adParamReturnValue)
Cnn_c.Parameters.Append cnn_p '添加參數ReTurn(返回值)
Set Rs = Cnn_c.Execute '執行
MsgBox Rs.RecordCount '顯示記錄數
If Rs.RecordCount > 0 Then
Rs.Close
End If
Cnn.Close
Set cnn_p = Nothing
Set Cnn_c = Nothing
Set Rs = Nothing
Set Cnn = Nothing

Ⅵ 急!VB調用sql存儲過程問題,定義了兩個存儲過程但是程序只調用插入那個存儲過程,求解

1、首先不知道你寫的兩個存儲過程 "MyAdd" 和"MyUpdate" 裡面的內容是怎麼寫的?正確與否?你要在SQL中進行驗證,然後再到VB中進行調用

其次在調用有參數的存儲過程時,要注意參數定義類型及參數的大小。
也就是說:如果參數是字元型,在傳送參數時要注意限制其字元的大小,如果參數是日期型變數,你用 Trim(TextBirthday.Text) 可行否?如果是數字型呢?
所以沒看到你的存儲過程的話,要找到程序中的錯誤就難了...

2、我一般調用存儲過程的步驟如下:
(A) 如:
定義一個實現「退貨單」的審核存儲過程.
CREATE PROCEDURE proCheckOutT203(@OrderNum varchar(12),@OperName varchar(10))
AS
..........
BEGIN TRAN
--- 中間復雜的運算省略
--- 設置單據審核標志
UPDATE T203 SET F6=@OperName, F7=GetDate() WHERE F1=@OrderNum
COMMIT
這里的參數OrderNum 為不超過12個字元型,OperName 為10位字元型

(B) 在VB 中調用
Dim adoConn As New ADODB.Connection

adoConn.Open adoConnStr
adoConn.Execute "proCheckOutT203 '" + Trim(Txt(0)) + "','" + UserName + "'"

其中:
adoConnStr 連接SQL的連接字元串
Trim(Txt(0)) 為單據編號 的 TextBox 控制項
UserName 為操作員姓名的變數

一般這樣就OK 了....

Ⅶ VB調用SQL中的存儲過程,並將結果顯示在MSFlexGrid控制項中。急等!!!

這個簡單,先把數據讀出來 然後再顯示就行了,
帖一段自己的程序你看看
Private Sub Command2_Click()
link
With adoRes
i = 1
While Not .EOF
MSFlexGrid1.TextMatrix(i, 0) = i
MSFlexGrid1.TextMatrix(i, 1) = !樁號
MSFlexGrid1.TextMatrix(i, 2) = !地面高程
MSFlexGrid1.TextMatrix(i, 3) = !設計高程
MSFlexGrid1.TextMatrix(i, 5) = !控制點高程
If !設計高程 = 0 Then
MSFlexGrid1.TextMatrix(i, 4) = 0
Else

MSFlexGrid1.TextMatrix(i, 4) = !填挖高
End If
ReDim Preserve zh(i), dmgc(i), sjgc(i), twg(i), kzdgc(i)
zh(i) = !樁號: dmgc(i) = !地面高程: sjgc(i) = !設計高程: twg(i) = !填挖高: kzdgc(i) = !控制點高程
i = i + 1
If i = MSFlexGrid1.Rows Then
MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1
End If
.MoveNext
Wend
End With
End Sub
我這個程序中用的MSFlexGrid中的行數是動態的,按需增加

Ⅷ vb調用sql存儲過程

'引用MicrosoftActiveXDataObjects2.8Library
DimCnnAsADODB.Connection
DimRsAsADODB.Recordset
DimCnn_cAsNewADODB.Command
Dimcnn_pAsADODB.Parameter
dimCourseIDasstring,CustomerIDasstring
SetCnn=NewADODB.Connection
SetRs=NewADODB.Recordset
'OnErrorResumeNext
Cnn.ConnectionString=ConnStr'連接字元串
WithCnn
.CursorLocation=adUseClient
.Open'連接
EndWith
SetCnn_c.ActiveConnection=Cnn
WithCnn_c
.CommandType=adCmdStoredProc'命令類型:存儲過程
.CommandText="sy_select_course"'存儲過程名
EndWith
Setcnn_p=Cnn_c.CreateParameter("ReTurn",adInteger,adParamReturnValue)
Cnn_c.Parameters.Appendcnn_p'添加參數ReTurn(返回值)
Setcnn_p=Cnn_c.CreateParameter("CustomerID",adVarChar,adParamInput,4,CustomerID)
Cnn_c.Parameters.Appendcnn_p'添加參數CustomerID
Setcnn_p=Cnn_c.CreateParameter("CourseID",adVarChar,adParamInput,4,CourseID)
Cnn_c.Parameters.Appendcnn_pSet'添加參數CourseID
Rs=Cnn_c.Execute'執行
IfRs.RecordCount>0Then
'這里處理查詢
Rs.Close'關閉記錄集
EndIf
Cnn.Close'關閉連接
Setcnn_p=Nothing
SetCnn_c=Nothing
SetRs=Nothing
SetCnn=Nothing

Ⅸ VB調用SQL存儲過程問題

先在查詢分析器裏手動給參數付值,看看是不是存儲過程的問題。
再檢查一下是不是代碼的問題。

Ⅹ VB中訪問存儲過程的幾種辦法

當一個SQL語句包含在存儲過程中時,伺服器不必每次執行它時都要分析和編譯它。■調用存儲過程,可以認為是一個三層結構。這使你的程序易於維護。如果程序需要做某些改動,你只要改動存儲過程即可■你可以在存儲過程中利用Transact-SQL的強大功能。一個SQL存儲過程可以包含多個SQL語句。你可以使用變數和條件。這意味著你可以用存儲過程建立非常復雜的查詢,以非常復雜的方式更新資料庫。■最後,這也許是最重要的,在存儲過程中可以使用參數。你可以傳送和返回參數。環境:WinXP VB6 sp6 SqlServer2000資料庫:test表:UsersCREATETABLE[dbo].[users]([id][int]IDENTITY(1,1)NOTNULL,[truename][char](10)COLLATEChinese_PRC_CI_ASNULL,[regname][char](10)COLLATEChinese_PRC_CI_ASNULL,[pwd][char](10)COLLATEChinese_PRC_CI_ASNULL,[sex][char](10)COLLATEChinese_PRC_CI_ASNULL,[email][text]COLLATEChinese_PRC_CI_ASNULL,[jifen][decimal](18,2)NULL)ON[PRIMARY]TEXTIMAGE_ON[PRIMARY]GOALTERTABLE[dbo].[users]WITHNOCHECKADDCONSTRAINT[PK_users]PRIMARYKEYCLUSTERED([id])ON[PRIMARY]GO存儲過程select_usersCREATEPROCEDUREselect_users@regnamechar(20),@numrowsintOUTPUTASSelect*fromusersSELECT@numrows=@@ROWCOUNTif@numrows=0return0elsereturn1GO存儲過程insert_usersCREATEPROCEDUREinsert_users@truenamechar(20),@regnamechar(20),@pwdchar(20),@sexchar(20),@emailchar(20),@jifendecimal(19,2)ASinsertintousers(truename,regname,pwd,sex,email,jifen)values(@truename,@regname,@pwd,@sex,@email,@jifen)GO在VB環境中,添加DataGrid控制項,4個按鈕,6個文本框代碼簡單易懂。『引用microsoftactivedataobject2..ConnectionDimrs1AsADODB.RecordsetDimrs2AsADODB.RecordsetDimrs3AsADODB.RecordsetDimrs4AsADODB.RecordsetDimcmdAsADODB.CommandDimparamAsADODB.Parameter'這里用第一種方法使用存儲過程添加數據PrivateSubCommand1_Click()Setcmd=NewADODB.CommandSetrs1=NewADODB.Recordsetcmd.ActiveConnection=mConncmd.CommandText="insert_users"cmd.CommandType=adCmdStoredProcSetparam=cmd.CreateParameter("truename",adChar,adParamInput,20,Trim(txttruename.Text))cmd.Parameters.AppendparamSetparam=cmd.CreateParameter("regname",adChar,adParamInput,20,Trim(txtregname.Text))cmd.Parameters.AppendparamSetparam=cmd.CreateParameter("pwd",adChar,adParamInput,20,Trim(txtpwd.Text))cmd.Parameters.AppendparamSetparam=cmd.CreateParameter("sex",adChar,adParamInput,20,Trim(txtsex.Text))cmd.Parameters.AppendparamSetparam=cmd.CreateParameter("email",adChar,adParamInput,20,Trim(txtemail.Text))cmd.Parameters.Appendparam『下面的類型需要注意,如果不使用adSingle,會發生一個精度無效的錯誤Setparam=cmd.CreateParameter("jifen",adSingle,adParamInput,50,Val(txtjifen.Text))cmd.Parameters.AppendparamSetrs1=cmd.ExecuteSetcmd=NothingSetrs1=NothingEndSub'這里用第二種方法使用存儲過程添加數據PrivateSubCommand2_Click()Setrs2=NewADODB.RecordsetSetcmd=NewADODB.Commandcmd.ActiveConnection=mConncmd.CommandText="insert_users"cmd.CommandType=adCmdStoredProccmd.Parameters("@truename")=Trim(txttruename.Text)cmd.Parameters("@regname")=Trim(txtregname.Text)cmd.Parameters("@pwd")=Trim(txtpwd.Text)cmd.Parameters("@sex")=Trim(txtsex.Text)cmd.Parameters("@email")=Trim(txtemail.Text)cmd.Parameters("@jifen")=Val(txtjifen.Text)Setrs2=cmd.ExecuteSetcmd=NothingSetrs1=NothingEndSub'這里用第三種方法使用連接對象來插入數據PrivateSubCommand4_Click()DimstrsqlAsStringstrsql="insert_users'"&Trim(txttruename.Text)&"','"&Trim(txtregname.Text)&"','"&Trim(txtpwd.Text)&"','"&Trim(txtsex.Text)&"','"&Trim(txtemail.Text)&"','"&Val(txtjifen.Text)&"'"Setrs3=NewADODB.RecordsetSetrs3=mConn.Execute(strsql)Setrs3=NothingEndSub'利用存儲過程顯示數據『要處理多種參數,輸入參數,輸出參數以及一個直接返回值PrivateSubCommand3_Click()Setrs4=NewADODB.RecordsetSetcmd=NewADODB.Commandcmd.ActiveConnection=mConncmd.CommandText="select_users"cmd.CommandType=adCmdStoredProc'返回值Setparam=cmd.CreateParameter("RetVal",adInteger,adParamReturnValue,4)cmd.Parameters.Appendparam'輸入參數Setparam=cmd.CreateParameter("regname",adChar,adParamInput,20,Trim(txtregname.Text))cmd.Parameters.Appendparam'輸出參數Setparam=cmd.CreateParameter("numrows",adInteger,adParamOutput)cmd.Parameters.AppendparamSetrs4=cmd.Execute()Ifcmd.Parameters("RetVal").Value=1ThenMsgBoxcmd.Parameters("numrows").ValueElseMsgBox"沒有記錄"EndIfMsgBoxrs4.RecordCountSetDataGrid1.DataSource=rs4DataGrid1.RefreshEndSub'連接資料庫PrivateSubForm_Load()SetmConn=NewConnectionmConn.ConnectionString="Provider=SQLOLEDB.1;PersistSecurityInfo=False;UserID=sa;InitialCatalog=Test;DataSource=yang"mConn.CursorLocation=adUseClient'設置為客戶端mConn.OpenEndSub'關閉數據連接PrivateSubForm_Unload(CancelAsInteger)mConn.CloseSetmConn=NothingEndSub->

熱點內容
什麼配置可以算神機 發布:2024-10-06 21:52:09 瀏覽:421
兩條吊筋怎麼配置高度 發布:2024-10-06 21:46:22 瀏覽:490
安卓平板b站緩存文件位置 發布:2024-10-06 21:44:43 瀏覽:906
能緩存視頻的播放器 發布:2024-10-06 21:36:48 瀏覽:132
安卓接入點哪個好 發布:2024-10-06 21:25:01 瀏覽:450
ns伺服器怎麼搭建 發布:2024-10-06 20:56:22 瀏覽:806
自解壓功能 發布:2024-10-06 20:51:40 瀏覽:590
win7限制上傳速度 發布:2024-10-06 20:42:58 瀏覽:540
php判斷字元串是否空 發布:2024-10-06 20:42:48 瀏覽:116
行業均衡配置基金有哪些 發布:2024-10-06 20:42:11 瀏覽:194