Naqash Younis Ответов: 1

Я хочу распечатать несколько записей студентов в rdlc с помощью VB.NET


я хочу распечатать несколько записей ваучеров студенческого сбора в один клик.
тот код, которым я собираюсь поделиться с вами, с помощью этого кода я могу распечатать только один ваучер студенческой платы, но я хочу распечатать весь ваучер платы, который присутствует в данной таблице sql.

Что я уже пробовал:

<pre>Public Class Employe_Led_report

    Public Function itemQillareport() As DataSet
        Dim dsData As DataSet
        Try

                   dsData = DalHelper.ExecuteDataset(m_ConString, CommandType.Text, "SELECT dbo.PrintChallan.*, dbo.School_Info.* FROM dbo.PrintChallan CROSS JOIN dbo.School_Info where PrintChallan.Reg_num='" & StidentFee.TextBox14.Text & "' and PrintChallan.Received_Amount='0'  and PrintChallan.Fea_year='" & StidentFee.TextBox4.Text & "' and School_Info.Id='1'")
        Catch ex As Exception
            Return Nothing
        End Try
        Return dsData

    End Function
    

    Private Sub Employe_Led_report_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
       

        ReportViewer1.LocalReport.ReportEmbeddedResource = "KTC.Report36.rdlc"
            Dim rdsNumberofReferrals As New Microsoft.Reporting.WinForms.ReportDataSource()

            rdsNumberofReferrals.Name = "DataSet1"
            Dim dsBrands As DataSet = itemQillareport()
            rdsNumberofReferrals.Value = dsBrands.Tables(0)
            ReportViewer1.LocalReport.DataSources.Add(rdsNumberofReferrals)
            ReportViewer1.Update()
        Dim newPageSettings As New System.Drawing.Printing.PageSettings
        newPageSettings.PaperSize = New Printing.PaperSize("Custom", 820, 1150)

        newPageSettings.Landscape = True
        newPageSettings.Margins = New System.Drawing.Printing.Margins(30, 10, 10, 10)
        ReportViewer1.SetPageSettings(newPageSettings)

        Me.ReportViewer1.ZoomPercent = 90
        Me.ReportViewer1.ZoomMode = Microsoft.Reporting.WinForms.ZoomMode.Percent
        Me.ReportViewer1.RefreshReport()

    End Sub

   
End Class

Dave Kreskowiak

Репост - https://www.codeproject.com/Questions/5061521/I-want-to-export-all-student-fee-voucher-in-one-PD

1 Ответов

Рейтинг:
1

OriginalGriff

Не делай этого так! Никогда не объединяйте строки для построения команды SQL. Это оставляет вас широко открытыми для случайной или преднамеренной атаки SQL-инъекции, которая может уничтожить всю вашу базу данных. Вместо этого всегда используйте параметризованные запросы.

Когда вы объединяете строки, вы вызываете проблемы, потому что SQL получает такие команды, как:

SELECT * FROM MyTable WHERE StreetAddress = 'Baker's Wood'
Цитата, добавленная пользователем, завершает строку в том, что касается SQL, и вы получаете проблемы. Но могло быть и хуже. Если я приду и наберу вместо этого: "x';DROP TABLE MyTable;--", то SQL получит совсем другую команду:
SELECT * FROM MyTable WHERE StreetAddress = 'x';DROP TABLE MyTable;--'
Которые SQL видит как три отдельные команды:
SELECT * FROM MyTable WHERE StreetAddress = 'x';
Совершенно правильный выбор
DROP TABLE MyTable;
Вполне допустимая команда "удалить таблицу"
--'
А все остальное-это комментарии.
Так оно и происходит: выбирает любые совпадающие строки, удаляет таблицу из базы данных и игнорирует все остальное.

Поэтому всегда используйте параметризованные запросы! Или будьте готовы часто восстанавливать свою БД из резервной копии. Вы ведь регулярно делаете резервные копии, не так ли?

Когда вы исправите это в своем приложении, вы можете двигаться дальше, но до тех пор ваша БД находится под слишком большим риском, чтобы продолжать.