我用数据环境设计器和报表设计器进行销售单据的打印,但是因为要进行复杂的数据检索(比如满足某个条件,进行某个操作),用数据环境设计器不方便,能不能手工写SQL语句,然后把得到的数据赋给COMMAND对象,简单点说就是自己写代码来实现数据环境设计器和报表设计器的连接操作?应该怎么写?请给出示例代码

解决方案 »

  1.   

    你可以把数据源绑定到一个数据集,完全可以通过sql语句来实现条件下生成报表啊
        strRptSql = "SELECT * FROM table WHERE "
        strRptSql = strRptSql & "年月日 =#" & strDate & "#"
        Set setCurveReport = ExecuteSQL(strRptSql, msgText)    Set rptCurveShow.DataSource = setCurveReport    rptCurveShow.Show 1
        Unload rptCurveShow
        setCurveReport.Close
      

  2.   

    DataEnvironment1.Connection1.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=database;Data Source=ServerName;pwd=PWD "
    DataEnvironment1.Connection1.Open
    DataEnvironment1.Commands(1).CommandText = "select * from tablename"
    Set DataReport1.DataSource = DataEnvironment1
    DataEnvironment1.Command1
      

  3.   

    http://www.suxw.com/old/netschool/winopen.asp?ID=408
      

  4.   

    通过sql语句来实现条件下生成报表
      

  5.   

    不要用Environment,直接添加DataReport。在细节中用RptTextBox控件按自己的打印要求布局。将其DataField属性对应相应的字段,注意不要设置DataMember,双击DataReport,添加代码如下(运行VB,选择“工程\引用”命令,引用“Microsoft AetiveX Date 2.x Library”):
    Private Sub DataReport_Initialize()
        Dim cn As ADODB.Connection
        Dim rs As ADODB.Recordset
        Dim Sql As String
        '连接数据库(Access)
        Set cn = New ADODB.Connection
        Sql = "Provider = SQLOLEDB.1;Persist Security Info = False;" & _
            "User ID = sa;Password = abc;Data Source = 192.168.0.1;" & _
            "Initial Catalog = dbName"
        cn.Open Sql
        '组合查询语句:
        Sql = "SELECT * FROM TableName " & _
            "where ID ='" & Form1.Text1.text & "'"
        '打开查询记录集
      Set rs = New ADODB.Recordset
        rs.Open Sql, cn, adOpenStatic, adLockReadOnly
        Set Me.DataSource = rs
    End Sub