Search code examples
mysqlvb.netcrystal-reports

Query from two tables in report


My VB application prints a report via ODBC. I added the tables using database expert and designed the Crystal Report. Where do I put my query? here is my query

SELECT ts.`SCHEDIDNO`,
       ts.`DAYNAME`,
       DATE_FORMAT(ts.`TIMESTART`, '%h:%i %p') as TIMESTART,
       DATE_FORMAT(ts.`TIMEEND`, '%h:%i %p') as TIMEEND,
       ts.`GRADELEVEL`,
       ts.`SECTIONNAME`,
       ts.`SUBJECTNAME`,
       ts.`FACFULLNAME`,
       ts.`ROOMNAME`,
       tf.`FACFULLNAME` as PERSONNEL,
       tf.`DEPARTMENT`,
       tse.`Adviser`
FROM `tblschedule` ts,
     `tblfaculty` tf,
      `tblsection` tse
WHERE ts.`GRADELEVEL` = " & lblgrade.Text & "
    AND ts.`SECTIONNAME` = '" & lblsect.Text & "'
    AND ts.`DEPARTMENTNAME` = tf.`DEPARTMENT`
    AND tf.`ADMINISTRATOR` = 1
    AND tse.`SECTIONNAME` = '" & lblsect.Text & "'

enter image description here


Solution

  • In Crystal report wizard, locate your odbc created with username and password.

    Then you will see a Command text, You can put your Query in there.

    This code for VB.NET

     Private CRPT As New ReportDocument
        Private APPPATH As String
        Private PARAM As New ParameterFields
        Public PARAM_DESC As New ParameterDiscreteValue
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    
            APPPATH = Application.StartupPath & "\REPORT\sample.rpt"
            CRPT.Load(APPPATH)
            Me.CrystalReportViewer1.ReportSource = CRPT
    
            PARAM = CRPT.ParameterFields
    
            PARAM_DESC.Value = Format(DatePicker1.Value, "yyyyMMdd")
            PARAM("DATEP").CurrentValues.Clear()
            PARAM("DATEP").CurrentValues.Add(PARAM_DESC)
            Me.CrystalReportViewer1.Refresh()
        End Sub
    

    This code is for C#:

    CRPT = new ReportDocument();
                APPPATH = Environment.CurrentDirectory + "Sample.rpt";
                CRPT.Load(APPPATH);
                Report_Viewer.Refresh();
                CRPT.SetParameterValue("syear", Servercls.year);
    
    
                CRPT.SetParameterValue("smonth", Servercls.month);
                CRPT.SetParameterValue("sday", Servercls.day);
                CRPT.SetParameterValue("datevalue", Servercls.Datevalue);
                Report_Viewer.ReportSource = CRPT;
    
                sc.configureCrystalReport();
                Report_Viewer.Refresh();
    

    Your crystal report parameter name must be the same with in your Code Behind.