用vba如何使用sql

sql="Select*FROM[Sheet1$]"这是可以的,但我想把sheet1和sheet2中的a1列进行关联,因为两个表的a列都是项目代码,请问怎么写SQL语句呢... sql = "Select * FROM [Sheet1$]" 这是可以的,但我想把sheet1 和sheet2 中的a1 列进行关联,因为两个表的a列都是项目代码,请问怎么写SQL语句呢

sql = "Select * FROM [Sheet1$],[sheet2$] where [sheet1$a] = [sheet2$a] " 这个提示错误
展开
 我来答
xiangjuan314
2016-01-20 · TA获得超过3.3万个赞
知道大有可为答主
回答量:2.9万
采纳率:0%
帮助的人:2918万
展开全部

一、界面设计

各控件名称属性分别为: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”

然后就就可以正常运行了。

pzKiller
2014-08-18 · TA获得超过564个赞
知道小有建树答主
回答量:467
采纳率:76%
帮助的人:181万
展开全部
建议你看看这条知识,你的弱项在SQL语句上,

http://zhidao.baidu.com/question/506663998.html
追问
语法知道的 不会运用到vba
追答
试下 [sheet1$].[a1]=[sheet2$].[a2]
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
手机用户59500
2014-08-18 · 超过73用户采纳过TA的回答
知道答主
回答量:119
采纳率:100%
帮助的人:66.6万
展开全部
Dim conn As New ADODB.ConnectionconnStr = "Driver={SQL Server};DataBase=test;Server=(local);UID=sa;PWD=123"conn.Open connStr '连接数据库Dim rs As New Recordsetsql = "select * from a" '查看表ars.Open sql, conn, 3, 3if Not rs.EOF then For iCols = 0 To rs.fields.Count - 1 Sheets(1).Cells(1, iCols + 1).Value = rs.fields(iCols).Name Next iCols Sheets(1).Cells(2, 1).CopyFromRecordset rsendif
追问
怎么看起来这么复杂
格式乱 看不懂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式