Member 9529406 Ответов: 2

Как я могу удалить логин базы данных в Crystal Report... VB.NET помогите, пожалуйста!


Когда я запускаю свой проект и ищу средство просмотра отчетов Crystal, перед загрузкой отчета появляется запрос на вход в систему. Это журнал базы данных в форме... которую я никогда не настраивал. как я могу его удалить??

Я использую VB.NET 2010 год

Я кодирую это на кнопке

Dim sqlQuery As String = "SELECT * FROM security_log where Middle_Name= '" & TextBox1.Text & "'"
Dim sqlAdapter As New MySqlDataAdapter
Dim sqlcommand As New MySqlCommand
Dim ds As New DataSet
Dim cryRpt As New ReportDocument
       
Dim rptDoc As CrystalDecisions.CrystalReports.Engine.ReportDocument
rptDoc = New CrystalReport3
Form6.CrystalReportViewer1.ReportSource = rptDoc

With sqlcommand
   .CommandText = sqlQuery
   .Connection = sqlcon
End With

With sqlAdapter
   .SelectCommand = sqlcommand
   .Fill(ds, "security_log")
End With

ds.WriteXml("D:\secl.xml", XmlWriteMode.WriteSchema)
Form6.Show()


Форма 6-это то место, где находится Средство просмотра отчетов Crystal..

Пожалуйста помочь

2 Ответов

Рейтинг:
17

Jean-Claude ADIBA

Привет если Crystal Report отправит вам форму входа в систему это потому что он не нашел учетные данные базы данных

ПОПРОБОВАТЬ ЭТО


Private Sub AssignConnection(rpt As ReportDocument)
    Dim connection As New ConnectionInfo()


     connection.DatabaseName = "YourDataBaseName" 'myDataBase
    connection.ServerName = "YourServerAdress" '127.0.0.1
    connection.UserID = "UserID" 'root
    connection.Password = "Password" '12345



    ' First we assign the connection to all tables in the main report
    '
    For Each table As CrystalDecisions.CrystalReports.Engine.Table In rpt.Database.Tables
        AssignTableConnection(table, connection)
    Next

    ' Now loop through all the sections and its objects to do the same for the subreports
    '
    For Each section As CrystalDecisions.CrystalReports.Engine.Section In rpt.ReportDefinition.Sections
        ' In each section we need to loop through all the reporting objects
        For Each reportObject As CrystalDecisions.CrystalReports.Engine.ReportObject In section.ReportObjects
            If reportObject.Kind = ReportObjectKind.SubreportObject Then
                Dim subReport As SubreportObject = DirectCast(reportObject, SubreportObject)
                Dim subDocument As ReportDocument = subReport.OpenSubreport(subReport.SubreportName)

                For Each table As CrystalDecisions.CrystalReports.Engine.Table In subDocument.Database.Tables
                    AssignTableConnection(table, connection)
                Next

                subDocument.SetDatabaseLogon(connection.UserID, connection.Password, connection.ServerName, connection.DatabaseName)
            End If
        Next
    Next
    rpt.SetDatabaseLogon(connection.UserID, connection.Password, connection.ServerName, connection.DatabaseName)
End Sub


Private Sub AssignTableConnection(ByVal table As CrystalDecisions.CrystalReports.Engine.Table, ByVal connection As ConnectionInfo)
    ' Cache the logon info block
    Dim logOnInfo As TableLogOnInfo = table.LogOnInfo

    connection.Type = logOnInfo.ConnectionInfo.Type

    ' Set the connection
    logOnInfo.ConnectionInfo = connection

    ' Apply the connection to the table!

    table.LogOnInfo.ConnectionInfo.DatabaseName = connection.DatabaseName
    table.LogOnInfo.ConnectionInfo.ServerName = connection.ServerName
    table.LogOnInfo.ConnectionInfo.UserID = connection.UserID
    table.LogOnInfo.ConnectionInfo.Password = connection.Password
    table.LogOnInfo.ConnectionInfo.Type = connection.Type
    table.ApplyLogOnInfo(logOnInfo)
End Sub


Member 9529406

Спасибо за ответ....

AssignTableConnection и ConnectionString на "SqlClient.ConnectionString" выдает ошибку... он говорит, что ConnectionString не является частью SqlClient и AssignTableConnection не объявлен....

Jean-Claude ADIBA

Привет я улучшил следующее решение для вас добавив реализацию AssignTableConnection и я пытаюсь изменить порядок вашего кода я надеюсь что это поможет


<pre lang="vb">
Дим SQL-запрос в виде строки = "выбрать * из security_log где Middle_Name= '" &амп; текстовое поле textbox1.Текст &ампер; "'"
Dim sqlAdapter как новый MySqlDataAdapter
Dim sqlcommand как новая MySqlCommand
Dim ds как новый набор данных
Дим cryRpt в новом документе

Тусклый rptDoc как CrystalDecisions.CrystalReports.Двигатель.Документе
rptDoc = новый CrystalReport3

С помощью sqlcommand
.Свойства commandtext = SQL-запрос
.Connection = sqlcon
Конец С

С помощью sqlAdapter
.Команды selectcommand = sqlcommand, который
.Заполнить(ДС, "security_log")
Конец С

'в AssignConnection я использовал System.Data.SqlClient.SqlConnectionStringBuilder(ConnectionString)
'чтобы получить соединение, предоставив connectionstring в параметре
'Но вы должны использовать свое соединение MYSQL sqlcon
AssignConnection(rptDoc)
rptDoc.SetDataSource(ДС)

ds.WriteXml("D:\secl.xml", XmlWriteMode.WriteSchema)

- ВЫ ВСЕГДА ДОЛЖНЫ ПРЕДОСТАВЛЯТЬ ИНФОРМАЦИЮ О СОЕДИНЕНИИ С ВАШИМ ДОКУМЕНТОМ REPORTDOCUMENT, ПРЕЖДЕ ЧЕМ ОТКРЫВАТЬ ЕГО
Form6.CrystalReportViewer1.ReportSource = rptDoc
Форме6.Показать()

</pre>

Member 9529406

в системе.Данных.Sqlclient как.Объект sqlconnectionstringbuilder(свойство connectionString) вы импортировать его... я имею в виду вы положите его на верх.... я пытаюсь импортировать его, но "AssignConnection()" до сих пор на подчеркивание(ошибка) .. извините за медленный ответ, потому что im новичок в VB.net2010.. итры не ставить AssignConnection(rptDoc) но когда я запускаю его регистрации в базе данных не оказалось, но отчет пустой...... им немного путаешь сейчас

Jean-Claude ADIBA

хорошо, давайте пойдем медленно, какой SGBD вы используете (MYSQL или SQL SERVER)

Member 9529406

В MySQL

Jean-Claude ADIBA

ОК не использовать эту систему линии.Данных.Sqlclient как.Объект Sqlconnectionstringbuilder(Параметр ConnectionString)
sqlclient предназначен для базы данных sqlserver

все, что вам нужно сделать, это удалить эту строку формы AssignConnection метод
Дим Кон, так как новая система.Данных.Sqlclient как.Объект Sqlconnectionstringbuilder(YourConnectionString)

и обеспечьте подключение вашей базы данных MYSQL к объекту CRYSTAL REPORT ConnectionInfo
подобный этому

соединение.DatabaseName = "YourDataBaseName" 'myDataBase
соединение.Имя_сервера = "YourServerAdress" '127.0.0.1
соединение.Корневой идентификатор пользователя = "имя пользователя" '
соединение.Password = "Пароль" '12345


Дай мне знать

я улучшаю метод assignconnection

Member 9529406

Это работает! Большое спасибо!!!

Jean-Claude ADIBA

не важно ! так что отметьте, что ваш вопрос был решен решением 1 ! он удаляет ваш вопрос в список вопросов без ответа. ;)

mdgulam

мы разработали приложение в visual studio и приложили отчет crystal. проблема в том, что crystal reports открыт на всех компьютерах с приложением. но на одной машине открывается только диалоговое окно входа в базу данных. дайте мне решение

Jean-Claude ADIBA

Привет, я надеюсь, что вы нашли решение своей проблемы, если нет. попробуйте ли вы решение, которое я дал ниже, с помощью AssignConnection(rpt As ReportDocument)
метод ?

mdgulam

спасибо.

я попробовал все методы, но не получил решения. но когда форматируешь систему и заново устанавливаешь все программное обеспечение, теперь оно работает нормально.

Kalpeshpatelbyk

Большое спасибо. ты вытащил меня из этой сложной ситуации, благослови тебя Господь.....

evry1falls

Спасибо Вам за ваше решение.Я только что обновил его в соответствии с моим сценарием [я использую DataTable, MS Access 2016] ->
Dim dt As DataTable = новый DataTable()

Sub Form1_Load()
        Dim DataAdapter1 As New OleDbDataAdapter("SELECT * FROM TABLE_NAME", CN)
        DataAdapter1.Fill(dt)
        DataAdapter1.Dispose()
        CN.Close()
        cryRpt.Load(Application.StartupPath & "\CrystalReport1.rpt")
        AssignConnection(cryRpt)
        cryRpt.SetDataSource(dt)
        CrystalReportViewer1.ReportSource = cryRpt
End Sub

Nha Khoa Paris

Кто-то, кто знает короткий код, который я могу поместить в какую-то длинную биографию? Пожалуйста, покажи мне как! спасибо

Рейтинг:
0

Nha Khoa Paris

Спасибо, что ты мне сейчас нужен. Этот код очень полезен


CHill60

Пожалуйста, не публикуйте комментарии в качестве "решения" к сообщению. Используйте опцию "есть вопрос или комментарий?" ссылка рядом с постом, который вы хотите прокомментировать