图表用MSCHART控件啊,如果要计算时间,只要提取期间数据啊,平均值只是SQL的一个函数啊,你真是学了3天,麻烦你看看帮助好不好。

解决方案 »

  1.   

    x座标为日期,y座标为金额.
    private sub command1_click()
    sqlstring="select * from data"
    rs.open sqlstring,conn,1,1
    do while not rs.eof
    使用line 画线(x轴从原点到...),具体看msdn
    使用line 画线(y轴),具体看msdn
    使用line 画矩形(柱状图),具体看msdn
    rs.movenext
    loop
    end sub
    private sub command2_click()
    sqlstring="select * from data where 日期<'" & text1.text & "' and 日期>'" & text2.text & "'"
    rs.open sqlstring,conn,1,1
    dim i as long,j as integer
    j=rs.recordcount
    do while not rs.eof
    i=clng(rs.fields("金额"))+i
    rs.movenext
    loop
    dim endmoney as long
    endmoney=i/j
    end sub
      

  2.   

    我还有一种方法,我想可以隐式调用EXCEL,在EXCEL的表中填入数据,然后利用EXCEL的宏功能生成图表后显示出来!
      

  3.   

    MSCHART控件不行啊,选datasource时显示没有找到与此使用者的数据源,请添加数据环境或ado控件。可就算加了ado控件,在控件属性里也无法用recordsource调用表格。其他方法正在研究中,顺便讲一句,本人无任何语言基础,看得很费力。
      

  4.   

    看得差不多了,只是没装msdn,所以不会用line画,有人给个例子吗?另外这句sqlstring="select * from data where 日期<'" & text1.text & "' and 日期>'" &text2.text & "'"大、小于号是不是该反过来?还有i=clng(rs.fields("金额"))+i用cdbl是不是更好一点?
      

  5.   

    private sub command2_click()
    sqlstring="select * from data where 日期<'" & text1.text & "' and 日期>'" & text2.text & "'"
    rs.open sqlstring,conn,1,1
    dim i as long,j as integer
    j=rs.recordcount
    do while not rs.eof
    i=clng(rs.fields("金额"))+i
    rs.movenext
    loop
    dim endmoney as long
    endmoney=i/j
    end sub
    这段不行啊,输入两个日期后按纽显示错误,选调试后显示这段rs.open sqlstring,conn,1,1为黄色,怎么办
      

  6.   

    那没有日期对不对?
    sqlstring="select * from data"
      

  7.   

    1.看看你的SQLSTRING写的正确与否。简单的方法你可以用ACCESS做的查询,然后复制代码
    2.rs.open sqlstring,,,adcmdtext 时你最好指明RS的属性,如:rst.CursorType = adOpenKeyset
    rst.LockType = adLockOptimistic等.
    3.用MSCHART是个好方法.
      

  8.   

    我把编的情况都贴出来吧,想不到求和平均都那么难做吗?没人会吗?
    情况1
    Private Sub Command2_Click()
    sqlstring = "select * from data where 日期<'" & Text1.Text & "' and 日期>'" & Text2.Text & "'"
    rst.CursorType = adOpenKeyset
    rst.LockType = adLockOptimistic
    rs.Open sqlstring, , , adCmdText
    Do While Not rs.EOF
    Loop
    Dim a As Long, b As Double
    b = rs.RecordCount
    Do While Not rs.EOF
    a = CDbl(rs.Fields("金额")) + a
    rs.MoveNext
    Loop
    Dim c As Double
    c = b / a
    Text3.Text = cEnd Sub
    完成后输入两个日期,日期格式均为2002-10-15的样式,结果显示实时错误424,要求对象。选调试,rst.CursorType = adOpenKeyset为黄色情况2
    Private Sub Command2_Click()
    sqlstring = "select * from data where 日期<'" & Text1.Text & "' and 日期>'" & Text2.Text & "'"
    rst.CursorType = adOpenKeyset
    rst.LockType = adLockOptimistic
    rs.Open sqlstring, conn, 1, 1
    Do While Not rs.EOF
    Loop
    Dim a As Long, b As Double
    b = rs.RecordCount
    Do While Not rs.EOF
    a = CDbl(rs.Fields("金额")) + a
    rs.MoveNext
    Loop
    Dim c As Double
    c = b / a
    Text3.Text = c
    也与上面一样。此外
    rst.CursorType = adOpenKeyset
    rst.LockType = adLockOptimistic
    rs.Open sqlstring, conn, 1, 1
    这几句不管怎么调换它们的先后顺序,出错选调试时都是第一个显黄色还有不要日期sqlstring="select * from data"
    依然是rs.Open sqlstring, conn, 1, 1显黄色。
    我真没办法了,对rs.Open sqlstring, conn, 1, 1这句不懂,参数、属性的设置也不会。谁能教教我?
      

  9.   

    求平均:
    rs.open "select avg(金额) as 平均 from data where 日期>=#" & format (begindate,"yyyy-mm-dd")& "# and 日期<=" & format(enddate,"yyyy-mm-dd") & "#"
    average = rs!平均
      

  10.   

    如果你的记录集是只读的,rs.open的后两项参数可以不设
    dim cnn as new adodb.connection
    dim rs as new adodb.recordset
    dim strCnn, strSQL as stringstrCnn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & IIf(Right(App.Path, 1) <> "\", "\", "") & "mydb.mdb;Persist Security Info=False"
    cnn.open 
    strSQL = "select avg(金额) as 平均 from data where 日期>=#" & format (begindate,"yyyy-mm-dd")& "# and 日期<=" & format(enddate,"yyyy-mm-dd") & "#"
    rs.open strSQL, cnn
      

  11.   

    楼上那位意思是不是新建一个叫rs的数据库,然后再把表输入,然后再打开rs并在里面操作啊?
    strCnn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & IIf(Right(App.Path, 1) <> "\", "\", "") & "mydb.mdb;Persist Security Info=False"这句是不是连接到我用access建立的文件的设置啊?我建立的文件路径是d:\data\db1.mdb,该怎么设呢?请教教我吧,我找不到这方面的资料,完全不懂啊。
      

  12.   

    1 rs是ADO的记录集对象,用来取回数据库的记录。
    2 如果你的可执行文件在数据库的统一目录下:
    strCnn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & IIf(Right(App.Path, 1) <> "\", "\", "") & "db1.mdb;Persist Security Info=False"
    这样的好处是使用了应用路径,打包安装后不会发生数据库路径错误。其中IIf(Right(App.Path, 1) <> "\", "\", "") 的作用是安装在根目录下或子目录下均可正常运行。
    当然,你也可以:
    strCnn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\data\db1.mdb;Persist Security Info=False"
    但是,打包安装后运行时可能找不到数据库。
      

  13.   

    楼上的大侠,按你的编码如下,Private Sub Command2_Click()
    Dim cnn As New adodb.Connection
    Dim rs As New adodb.Recordset
    Dim strCnn, strSQL As String
    strCnn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\data\db2.mdb;Persist Security Info=False"
    cnn.Open
    strSQL = "select avg(金额) as 平均 from data where 日期>=#" & Format(begindate, "2002-1-4") & "# and 日期<=" & Format(enddate, "2002-1-9") & "#"
    rs.Open strSQL, cnnEnd Sub
    显示实时错误,[micrsoft][odbc驱动程序管理器]未发现数据源名称并且未指定默认驱动程序。
    我是用xp,怎么装odbc啊?
    另外,strSQL = "select avg(金额) as 平均 from data where 日期>=#" & format (begindate,"yyyy-mm-dd")& "# and 日期<=" & format(enddate,"yyyy-mm-dd") & "#"
    rs.open strSQL, cnn这句是把平均显示出来吗?
    rs.open "select avg(金额) as 平均 from data where 日期>=#" & format (begindate,"yyyy-mm-dd")& "# and 日期<=" & format(enddate,"yyyy-mm-dd") & "#"
    average = rs!平均    这句放在上面那句上吗?
    我比较笨,请耐心指导
      

  14.   

    金额统计:用 SQL 语句查找到记录adoRs,
    然后遍历 adoRs ,将每条记录的金额字段累加到一个变量就行了。
    这对你这个“3天VB学习者”来说不难吧!图表用MSCHART。网站应该有这个的实例代码,你找找看。
      

  15.   

    解决了一部分了,看下面代码
    Dim NewDyn As Recordset
        Dim OpenWs As Workspace
        Dim OpenDB As Database
        Set OpenWs = DBEngine.Workspaces(0)
        Set OpenDB = OpenWs.OpenDatabase("D:\data2\db2.mdb")
        Set NewDyn = OpenDB.OpenRecordset("select * from data", dbOpenSnapshot)
        
    Dim i As Long, j As Integer
    j = NewDyn.RecordCount
    Do While Not NewDyn.EOF
    i = CLng(NewDyn.Fields("金额")) + i
    NewDyn.MoveNext
    Loop
    Dim endmoney As Long
    endmoney = i / j
    Text1.Text = endmoney
    问题是只是把所有金额的和求出来了,我明明除了j来求平均呀?
    还有就是只能把启动程序时的数据加出来,一旦修改了数据就只能再启动程序,怎样实现数据库刷新?
      

  16.   

    Set NewDyn = OpenDB.OpenRecordset("select * from data", dbOpenSnapshot)这段代码怎么选择日期?比如从2002-1-1至2002-1-5
    我写成这样Set NewDyn = OpenDB.OpenRecordset("select * from data where 日期>='2002-1-1' and 日期<='2002-1-5'", dbOpenSnapshot)
    但编译时却显示data type mismatch in criteria expression
    这是最后的问题了,其他问题都已解决,谁能解决这个就结帖!
      

  17.   

    格式化日期字段的格式,查查msdn 中的说明
      

  18.   

    Set NewDyn = OpenDB.OpenRecordset("select * from data where 日期>=#" & Format(Text2.Text) & "# And 日期 <=" & Format(Text3.Text) & "#", dbOpenSnapshot)这段也不行,向text1输入2002-1-1,向text2输入2002-1-5后显示syntax error in date in query expression'日期>=## and日期<=#
    谁能给个正确代码?要从text1和text2输入的时间来选择的。
      

  19.   

    天,用MSCHART绝对没问题,用CHATDATA属性阿,要的给我发信,我送原函数代码。
    [email protected]