當前位置:首頁 » 編程語言 » vbasql做一個兩層架構
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

vbasql做一個兩層架構

發布時間: 2022-08-07 22:53:30

Ⅰ 請問怎樣用vba實現:內嵌sql並從資料庫查詢到數據並放入指定的單元格內請高手賜教或給個例子~ 小妹謝過

你大概弄錯了,資料庫不存在什麼最後空行,你指的多半是插入操作,如果是的話,執行sql語句(假定你的第三列欄位名為name)
str="insert into wdgj21(name) values('" & Ar & "')"
(怎麼執行不用偶說吧)當然如果你用addnew之類來替代上面這個也是可以的。

取出數據跟這個是差不多的,假定你的資料庫中的name2列中包括這個ar的內容,你想取出那一行的name的值,
str="select top 1 name from wdgj21 where name2 like '%" & Ar & "%'"
用ADODB.Recordset打開就可以取到結果了。

Ⅱ 我想用VB+SQL資料庫做一個具有查詢功能的小軟體,代碼怎麼寫了...

提供一個思路,具體有很多東西自己去探索學習吧:
在VB編程環境中新建VB工程,添加引用:
Microsoft ActiveX Data Objects 2.8 Library;
Microsoft ActiveX Data Objects Recordset 2.8 Library;
再添加Excel的對象庫,具體名稱自己看看就知道了。
用ADO.connection連接SQL資料庫,用ADO.recordset讀寫資料庫,從資料庫中返回的號碼、姓名、部門、數量等信息在ADO.recordset對象的記錄集中,看看recordset對象的屬性和方法就知道怎樣操作這些數據了,將這些數據賦給Excel對象有關單元格,調用Excel保存方法實現excel導出數據。

Ⅲ sql語句放在vba里需要什麼框架

VBA里使用SQL語句,不僅要需要遵循SQL的語法規則。在VBA中構造不光要遵循SQL的語法規則,還必須要遵循VBA的語法規則。
於是就會多出來好些如連接符(&)、雙引號(")等符號,很多初學者就是被這些符號搞暈了。下面就簡單講一下如何通過拆分法來理解VBA中動態SQL語句的構造。
在查詢的時候雖然我們可以將查詢條件綁定到窗體控制項,如下面的示例:
Select
* FROM 訂單表 Where客戶名稱
=Forms!客戶查詢窗體!客戶名稱輸入框但這樣只能適用於比較簡單的查詢,隨著條件復雜度的增加,SQL語句的構造難度也會直線上升,更重要的是這樣
的SQL語句很難理解,就算最終做出來了,一旦過了一段時間需要修改的話,就非常麻煩。
於是在VBA中使用變數構造動態的
SQL語句就成了一種理想的選擇。我們來看一個例子,比如我們要通過在窗體上的三個文本框(txt客戶名稱、txt開始日期、txt結束日期)內輸入相應
的條件值,來構造一個查詢訂單表中指定客戶在某個時間段內銷售記錄的SQL語句,在VBA中的代碼如下:
strSQL="
Select * FROM 訂單表 Where 客戶名稱='www.gzlij.com" & Me.txt客戶名稱 & "'
AND 銷售日期 Between #" & Me.txt開始日期 & "# And #" & Me.txt結束日期
& "#"
上面的的語句該如何理解呢?這里通過替換法來進行拆分,我們先假設文本框的值分別是:
txt開始日期=2010-5-1
txt結束日期=2010-5-31
txt客戶名稱=東南實業
根據上面的條件,我們需要得到的SQL語句應該是:
Select * FROM 訂單表 Where 客戶名稱="東南實業" AND 銷售日期 Between #2010-5-1# And #2010-5-31#
這里的由於要在VBA中構造,而雙引號(")是VBA中的字元串界定符,所以我們需要把它改成單引號(')來符合VBA的語法規則,那麼SQL語句就成了:
Select * FROM 訂單表 Where 客戶名稱='東南實業' AND 銷售日期 Between #2010-5-1# And #2010-5-31#
(當然我們也可以根據VBA的語法來用兩個雙引號,這樣VBA編譯器就會把這兩個連續的雙引號識別為一個雙引號字元,而不是字元串界定符,不過這樣相對來說更加復雜和麻煩一些,還有一些其它原因這里就不細說了。)
我們再把裡面的條件值換回變數,由於條件需要用變數代替,所以我們這里把上面的SQL語句拆分成如下的多個片段:
Select * FROM 訂單表 Where 客戶名稱='東南實業' AND 銷售日期 Between #2010-5-1# And #2010-5-31#
然後把其中的條件值換成變數,就成了:
Select * FROM 訂單表 Where 客戶名稱='Me.txt客戶名稱' AND 銷售日期 Between #Me.txt開始日期# And #Me.txt結束日期#
接下來再把其中不是變數的片段兩頭加上雙引號,使其符合VBA中的字元串語法:
"Select * FROM 訂單表 Where 客戶名稱='"Me.txt客戶名稱"' AND 銷售日期 Between #"Me.txt開始日期"# And #"Me.txt結束日期"#"
最後我們再用連接符(&)把這些拆分處理後得到的片段連接組合成一個字元串(注意,使用連接符組合多個字元串或變數時,連接符兩邊要有空格),就得到了我們需要的VBA中的動態SQL語句的寫法:
"Select
* FROM 訂單表 Where 客戶名稱='" & Me.txt客戶名稱 & "' AND 銷售日期 Between #"
& Me.txt開始日期 & "# And #" & Me.txt結束日期 & "#"

Ⅳ 如何用vba將2個單元格的sql語句相連

用連字元 & 或者直接單元格值相加,不過這都簡單,就是得注意兩個sql語句之間的空格和符號

Ⅳ Excel VBA SQL如何多表聯合查詢

select abcg.型號,階段,生產日期,生產數,不良數,銷售日期,銷售數量 from (select abc.型號,階段,日期,生產日期,生產數,不良數 from (select a.型號,階段,日期 from [表A$] a left join (select 型號,生產日期 as 日期 from [表B$] UNION select 型號,銷售日期 as 日期 from [表C$]) bc on a.型號=bc.型號) abc left join (select 型號,生產日期,SUM(生產數) AS 生產數,SUM(不良數) AS 不良數 from [表B$] group by 型號,生產日期) bg ON abc.型號=bg.型號 and abc.日期=bg.生產日期) abcg left join (select 型號,銷售日期,SUM(銷售數量) AS 銷售數量 from [表C$] group by 型號,銷售日期) cg on abcg.型號=cg.型號 and abcg.日期=cg.銷售日期 order by abc.型號,abc.日期

Ⅵ 用vba如何使用sql

一、界面設計

各控制項名稱屬性分別為:label1 、text1 、label2、text2、commandok、cmdcancel

代碼設計如下:

'首先添加一個模塊,寫上以下通用聲明和Sub main():


Public conn As ADODB.Connection '通用(聲明)

Sub main()

Set conn = New ADODB.Connection '通用(main)

conn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;" _

+ "User ID=sa;password=123;Initial Catalog=denglu;Data Source=127.0.0.1" '連接資料庫代碼

conn.Open

frmLogin.Show '首先顯示登錄界面。也可以在工程屬性中設置啟動對象為Sub main()或者frmlogin窗體

End Sub

'在Frmlogin 代碼窗口,為cmdok控制項寫以下代碼:

Private Sub cmdok_Click()

If text1.Text = "" Then

MsgBox "用戶名不能為空!", vbOKOnly + vbInformation, "友情提示"

text1.SetFocus

Exit Sub '若用戶名文本框內為空,則出現提示框

End If

If text2.Text = "" Then

MsgBox "密碼不能為空!", vbOKOnly + vbInformation, "友情提示"

text2.SetFocus

Exit Sub '若輸入密碼文本框為空,也出現提示框

End If

Dim strSQl As String

strSQl = "select * from User1 where username='" & Trim$(text1.Text) & "' and pwd='" & Trim$(text2.Text) & "' "

'書寫SQL代碼,查詢User1表中是否存在窗體中用戶輸入的信息。

Dim str As New ADODB.Recordset

Set str = New ADODB.Recordset

str.CursorLocation = adUseClient

str.Open strSQl, conn, adOpenStatic, adLockReadOnly

With str

If .State = adStateOpen Then .Close

.Open strSQl

If .EOF Then

Try_times = Try_times + 1

If Try_times >= 3 Then

MsgBox "您已連續三次輸入錯誤,系統將自動關閉", vbOKOnly + vbCritical, "警告"

Unload Me '若用戶連續輸入3次錯誤密碼,則系統關閉

Else

MsgBox "對不起,用戶名不存在或密碼錯誤 !", vbOKOnly + vbQuestion, "警告"

text1.SetFocus

text1.Text = ""

text2.Text = ""

End If

Else

Unload Me '若登錄成功,則隱藏當前窗體

Form2.Show '然後顯示Form窗體

End If

End With

End Sub

Private Sub cmdCancel_Click()

End '若單擊Cmdcel按鈕,則結束應用程序

End Sub

運行中存在的問題:

代碼中有Dim conn As adodb.connection,運行時顯示"用戶定義類型未定義"

解決方法:點擊「工程」--「引用」找到「Microsoft ActiveX Data Object 2.6」

然後就就可以正常運行了。

Ⅶ 如何在excel里用vba編程製作一個簡單的資料庫

Set conn = New ADODB.Connection

Set rs = New ADODB.Recordset
conn.Open "Provider=Microsoft.Jet.Oledb.4.0;Persist Security Info = False;extended properties='Excel 8.0;HDR=YES;IMEX=0';Data Source=「各科成績表.xls"
If conn.State = adStateOpen Then
sSql = "select * from [sheet1$] where 姓名 like '" & str1 & "' and 成績 like '" & str2 & "'
rs.Open sSql, conn, 1, 1
If rs.BOF And rs.EOF Then
。。。。。。
首先用VBA控制項畫好窗體,連接成績表,再執行相應的操作。。。

Ⅷ 如何寫一個系統的架構,又如何用程序來實現呢,用的是C和SQL

我們用的是ERP管理的, 他是根據零件的工藝路線走的

Ⅸ 求教VBA連接SQL資料庫的詳細方法及解釋。

1、基本上所有的資料庫都有對應的寫法(有些資料庫是要裝連接驅動才能連),比如"Provider=Microsoft.Jet.OLEDB.4.0(用來連接access)或者provider =MSDASQL,而且每種資料庫也可能會有多種連接方法(Provider意即資料庫引擎),常見的有下面這些

Provider 代碼 Provider
ADSDSOObject Active Directory Services
Microsoft.Jet.OLEDB.4.0 Microsoft Jet databases
MSDAIPP.DSO.1 Microsoft Internet Publishing
MSDAORA Oracle databases
MSDAOSP Simple text files
MSDASQL Microsoft OLE DB provider for ODBC
MSDataShape Microsoft Data Shape
MSPersist Locally saved files
SQLOLEDB Microsoft SQL Server
2、參見http://www.w3school.com.cn/ado/met_conn_open.asp#connectoptionenum
3、這樣就可以對book1.xlsx中的數據使用sql語法進行操作
4、當你需要返回結果的,比如說你要查詢資料庫符合某個條件的有幾條記錄,或者說取出資料庫中符合條件的一批記錄的時候就要用數據集,單一的conn.execute只能執行操作,不能返回數據,必須配合結果集使用才可取回數據。

Ⅹ Excel 怎樣用VBA構造SQL的where子句,實現任意多條件組合查詢

根據索引的順序與數據表的物理順序是否相同,可以把索引分成兩種類型:聚簇索引與非聚簇索引。SQL Server 通過使用聚集索引鍵搜索聚集索引來檢索數據行,而聚集索引鍵存儲在非聚集索引的葉行內。 我是外行,只知道這一點點·······必須有待數據高...