vbasqlif
① 在excel中如何使用vba實現將sql的數據快速寫入excel
DimconnAsNewADODB.Connection
connStr="Driver={SQLServer};DataBase=test;Server=(local);UID=sa;PWD=123"
conn.OpenconnStr'連接資料庫
DimrsAsNewRecordset
sql="select*froma"'查看錶a
rs.Opensql,conn,3,3
ifNotrs.EOFthen
ForiCols=0Tors.fields.Count-1
Sheets(1).Cells(1,iCols+1).Value=rs.fields(iCols).Name
NextiCols
Sheets(1).Cells(2,1).CopyFromRecordsetrs
endif
② VBA SQL語句請教
就5個表,既然用SQL,就不用FOR EACH工作循環了吧,直接寫結果,雖然看起來復雜,但是結果簡單命令,機器執行也更快:
selectcasesType
case1
sExcel_select="(Select"&sTitle&"From[1序數據$]"&sWhere&")"_
&"unionall(Select"&sTitle&"From[2序數據$]"&sWhere&")"
case2
sExcel_select="(Select"&sTitle&"From[3序數據$]"&sWhere&")"
dselect
③ 用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」
然後就就可以正常運行了。
④ ACCESS中VBA調用SQL語句的問題
ID不要打上單引號:
rsql = "UPDATE 員工表 set 備注 ='" & 員工備注.Value & "' WHERE ID =" & 員工選擇框.ListIndex
如果還是不行,就再加上VAL轉化一下試試:
rsql = "UPDATE 員工表 set 備注 ='" & 員工備注.Value & "' WHERE ID =" & Val(員工選擇框.ListIndex)
⑤ EXCEL VBA SQL update欄位的問題
if arr(j, 3) = "Y" Then
Str12 = "放行時間=" & "'" & Date & "'"
sql = "UPDATE [data$] SET " & Str1 & "," & Str2
& "," & Str3 & "," & Str4 & "," & Str5 & ","
& Str6 & "," & Str7 & "," & Str8 & "," &
Str9 & "," & Str10 & "," & Str11 & "," & Str12
& "WHERE 運單號 = '" & arr(j, 1) & " '"
Else
Str12 = "放行時間=" & "'" & " " & "'"
End If
⑥ 用VBA語言調用sql資料庫數據到excel中
VBE 工具 引用,選中 Microsoft ActiveX Data Object 2.8 Library
我不清楚是不是UFDATA_013_2008表的VENDOR列的數據,如果不是,你自己改一下SQL語句吧,sql = "select VENDOR from UFDATA_013_2008"
Sub SQL數據導入()
Dim cn As New ADODB.Connection
Dim rs As ADODB.Recordset
Dim str As String
Dim sql As String
Dim i As Integer
str = "Provider=SQLOLEDB;Data Source=SQLSERVER伺服器名或IP;DATABASE=資料庫;UID=用戶名;PWD=密碼"
cn.Open str
Set rs = New ADODB.Recordset
sql = "select VENDOR from UFDATA_013_2008"
rs.Open sql, cn, adOpenStatic, adLockOptimistic
If Not rs.EOF Then
For i = 1 To rs.RecordCount
Sheet2.Cells(i, 1).Value = rs.Fields(0).Value
Next i
rs.MoveNext
End If
rs.Close
cn.Close
End Sub
⑦ Access VBA中如何使用 SQL 語句。
提問里是一段打開ADO記錄集對象的代碼,並不完整且含有錯誤。下面提供一個完整一點的代碼供參考:
PrivateSubCommand111_Click()
DimsqlAsString
'聲明ADO記錄集對象
DimrsAsADODB.Recordset
Setrs=NewADODB.Recordset'實例化記錄集對象
'拼寫SQL語句並賦值到變數
sql="SELECTDGZY.usenameFROMDGZYWHERE(((DGZY.usename)Like'張三'));"
'打開記錄集
rs.Opensql,CurrentProject.Connection,adOpenKeyset,adLockOptimistic
'利用記錄集對象進行所需的有關操作,代碼略
EndSub
⑧ excel vba 使用sql語句查詢access資料庫時,如何知道沒有查找到內容
Dim Rs As Recordset
strSQL = "SELECT DISTINCT 發站 FROM [LMSData2016.12$]"
Conn.Open strConn '打開資料庫鏈接
Set Rst = Conn.Execute(strSQL)
If rs.RecordCount > 0 Then '這個就可以判斷了,大於0的就是有數
⑨ vba sql查詢
sql一般用在多條件查詢,對資料庫讀寫等。
1. VBA如何建立sql連接
A.在VBA Project 窗口中,「工具—引用—Microsoft ActiveX Data Objects 2.0 Library」,如下圖所示
B. VBA語句
Private Sub CommandButton1_Click()
Dim cnn As ADODB.Connection』定義變數
Dim sql$, Stext$, i As Integer
Worksheets(3).Cells.Clear
Stext = IIf(TextBox1.Value = "", "*", TextBox1.Value)
Set cnn = CreateObject("adodb.connection")』生成對象
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" & ThisWorkbook.FullName』打開資料庫
If TextBox1 = "" Then
sql = "select * from [sheet2$]"』sql語句
Else
sql = "select * from [sheet2$] where 姓名 like '" & TextBox1.Value & "'"
End If
Worksheets(3).[a1].CopyFromRecordset cnn.Execute(sql)』執行sql語句
cnn.Close
Set cnn = Nothing
End Sub
2. sub text()
Dim cnn As ADODB.Connection』定義變數
Dim rs as adodb.recordset
Set cnn = CreateObject("adodb.connection")』生成對象,若定義變數時為Dim cnn As New ADODB.Connection,此句可省略
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" & ThisWorkbook.FullName』打開資料庫
sql = "select * from [sheet2$] where 姓名 like '" & TextBox1.Value & "'"
rs.open sql,cnn,adOpenKeyset.adLockOptimistic』生成查詢記錄,為後面出書數據准備
Worksheets(3).[a1].CopyFromRecordset rs
end sub
________________________________________________________________________
以下根據網路整理
2 Select SQL語句
SELECT * FROM table_name WHERE column1 = xxx [AND column2 > yyy] [OR column3 <> zzz]
'*'表示全部的欄位都列出來,如果不全部列出,則可以寫欄位名稱如 學號,姓名……;WHERE 之後是接條件式,把符合條件的資料列出來,table_name如果為工作表名稱,書寫格式[工作表名$],下同。
SELECT column1,AVG(column2) FROM table_name GROUP BY column1 HAVING AVG(column2) > xxx
說明: 1.GROUP BY: 以column1 為一組計算 column2 的平均值必須和 AVG、SUM等整合性查詢的關鍵字一起使用。2.HAVING : 必須和 GROUP BY 一起使用作為整合性的限制。
復合性的查詢:SELECT * FROM table_name1 WHERE EXISTS (SELECT * FROM table_name2 WHERE conditions )
說明:1.WHERE 的 conditions 可以是另外一個的 query。2. 在此是指存在與否。
SELECT column1,columns2,...FROM table_name
說明:把table_name 的特定欄位資料全部列出來
SELECT COUNT (*) FROM table_name WHERE column_name = xxx
說明:查詢符合條件的資料共有幾筆。
1.計算出總和,所選的欄位必須是可數的數字形態。2.除此以外還有 AVG() 是計算
SELECT SUM(column1) FROM table_name
說明:平均、MAX()、MIN()計算最大最小值的整合
SELECT * FROM table_name1 WHERE column1 BETWEEN xx AND yy
說明:BETWEEN 表示 column1 的值介於 xx 和 yy 之間。
3. update SQL語句
UPDATE table_name SET column1='xxx' WHERE conditoins
說明:1.更改某個欄位設定其值為'xxx'。
2.conditions 是所要符合的條件、若沒有 WHERE 則整個 table 的那個欄位都會全部被更改。
4. deletesql語句
刪除資料: DELETE FROM table_name WHERE conditions
說明:刪除符合條件的資料。
說明:關於WHERE條件後面如果包含有日期的比較,不同資料庫有不同的表達式
5.SQL中通配符用
• "%" 表示零個或多個,
• "_"表示任何單一字元
• [charlist] 字元列中的任何單一字元
• [^charlist] [!charlist] 不在字元列中的任何單一字元
• select * from databasename where fieldname like '%XX%'
• SELECT * FROM Persons WHERE City LIKE '[AOF]%'
• 從上面的 "Persons" 表中選取居住的城市以 "A" 或 "O" 或 "F" 開頭的人
• SELECT * FROM Persons WHERE City LIKE '[!AOF]%'
• 從上面的 "Persons" 表中選取居住的城市不以 "A" 或 "O" 或 "F" 開頭的人
⑩ 在Excel VBA中使用SQL語句返回滿足多條件的值的行 在多少行
'假設第一行為標題行,型體在A列,訂單在B列,逐一顯示滿足條件的行號
sub查找定位()
dimiaslong
fori=1to65536
setws=thisworkbook.sheets("dindan")
IFws.range("A"&i)="MG358-2"andws.range("B"&i)="10310940"then
msgbox"查找的結果在第"&i&"行"
EndIF
next
endsub