Crystal Reports пытается выбрать из 2 таблиц - PullRequest
1 голос
/ 29 октября 2019

Я хочу выбрать данные из 2 таблиц. Это 2 таблицы

CREATE TABLE [dbo].[Invoice] (
[InvoiceID]    INT          IDENTITY (1, 1) NOT NULL,
[CustomerName] VARCHAR (50) NULL,
[Telephone]    CHAR (10)    NULL,
[Date]         VARCHAR (30) NULL,
[Total]        FLOAT (53)   NULL,
[Discount]     FLOAT (53)   NULL,
[ToPay]        FLOAT (53)   NULL,
CONSTRAINT [Invoice_PK1] PRIMARY KEY CLUSTERED ([InvoiceID] ASC)

CREATE TABLE [dbo].[Orders] (
[InvoiceID] INT          NOT NULL,
[ItemNO]    INT          NOT NULL,
[Category]  VARCHAR (50) NULL,
[ItemName]  VARCHAR (50) NULL,
[Price]     FLOAT (53)   NULL,
[Qty]       INT          NOT NULL,
[SubTotal]  FLOAT (53)   NULL,
CONSTRAINT [Orders_FK1] FOREIGN KEY ([InvoiceID]) REFERENCES [dbo].[Invoice] ([InvoiceID])

Поэтому я хочу выбрать данные из этих 2 таблиц по идентификатору счета. Это мои коды

SqlConnection conect = new SqlConnection("Data Source=DESKTOP-R34C6VV\\SQL;Initial Catalog=Restaurant;Integrated Security=True");


            try
            {
                String str = "Data Source=DESKTOP-R34C6VV\\SQL;Initial Catalog=Restaurant;Integrated Security=True";

                String query = "select * from Invoice where InvoiceID = '" + value + "'";


                SqlConnection con = null;
                con = new SqlConnection(str);

                SqlCommand cmd = new SqlCommand(query, con);
                SqlDataReader view;

                con.Open();

                view = cmd.ExecuteReader();


                if (view.HasRows)
                {
                    if (view.Read())
                    {

                        Cus_Name = view.GetString(1);
                        Cus_Tel = view.GetString(2);
                        Date = view.GetString(3);
                        Total = view.GetDouble(4);
                        Discount = view.GetDouble(5);
                        ToPay = view.GetDouble(6);

                        PrepareBill_txt1.Clear();
                        go = 1;
if (go == 1)
        {

            Print open = new Print();

            Crystal_Bill cr = new Crystal_Bill();

            TextObject var1 = (TextObject)cr.ReportDefinition.Sections["Section1"].ReportObjects["Text17"];
            TextObject var3 = (TextObject)cr.ReportDefinition.Sections["Section1"].ReportObjects["Text19"];
            TextObject var4 = (TextObject)cr.ReportDefinition.Sections["Section1"].ReportObjects["Text20"];
            TextObject var6 = (TextObject)cr.ReportDefinition.Sections["Section1"].ReportObjects["Text22"];
            TextObject var7 = (TextObject)cr.ReportDefinition.Sections["Section4"].ReportObjects["Text23"];
            TextObject var8 = (TextObject)cr.ReportDefinition.Sections["Section4"].ReportObjects["Text24"];
            TextObject var9 = (TextObject)cr.ReportDefinition.Sections["Section4"].ReportObjects["Text25"];

            var1.Text = value;
            var3.Text = Date;
            var4.Text = Cus_Name;
            var6.Text = Cus_Tel;
            var7.Text = Total.ToString("0.00");
            var8.Text = Discount.ToString("0.00");
            var9.Text = ToPay.ToString("0.00");


            int a = System.Convert.ToInt32(value);
            cr.SetParameterValue("pInvoiceID", a);

            open.crystalReportViewer1.ReportSource = cr;

                    open.Show();

, и я создал метод для выбора другой таблицы. Вот мои коды для этого метода:

 Crystal_Bill cr = new Crystal_Bill();
        SqlConnection conect = new SqlConnection("Data Source=DESKTOP-R34C6VV\\SQL;Initial Catalog=Restaurant;Integrated Security=True");
        string sql = "SELECT * from Orders WHERE InvoiceID ='"+PrepareBill_txt1.Text+"'";
        DataSet dt = new DataSet();
        SqlDataAdapter adapter = new SqlDataAdapter(sql,conect);
        adapter.Fill(dt,"Orders");
        cr.SetDataSource(dt.Tables["Orders"]);

Таким образом, метод работает в одиночку, а другой работает в одиночку, но когда я пытаюсь объединить их, я не получаю никакого результата, только первый код работаетСтол Invoic. Я пытался использовать этот метод в программе, но он не работал. Это для моего проекта колледжа.

Когда я запускаю программу, я получаю все данные в базе данных. Я хочу выбрать его по InvoiceID, как метод, который я создал. Это мой отчет Crystal Report:

crystal report pic

1 Ответ

0 голосов
/ 30 октября 2019

Согласно вашему коду, вы просто извлекаете записи из таблицы Orders, но вам нужно join заказ двух таблиц и счет-фактура и выбрать необходимый столбец в соответствии с вашими потребностями, а также просто перетащить столбец в отчет Crystal в видевы уже сделали.

ig Запрос должен быть написан примерно так, как показано ниже.

SELECT o.InvoiceID,
    o.CustomerName,
    o.Telephone,
    o.Date,
    o.Total,
    o.Discount, 
    o.ToPay,
    i.ItemNO,
    i.Category,
    i.ItemName,
    i.Price, 
    i.Qty, 
    i.SubTotal
FROM orders As o
INNER JOIN Invouce AS i ON o.InvoiceID = i.InvoiceID  
WHERE i.InvoiceID  = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...