Рейтинг:
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)
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
Кто-то, кто знает короткий код, который я могу поместить в какую-то длинную биографию? Пожалуйста, покажи мне как! спасибо