DELAY IN CONNECTION DB

giovedì 10 novembre 2005 - 21.28

NIKITA Profilo | Newbie

HI, i open a crystal report file with CrystalReportViewer1 and if the report is open also the connection to my database in access remain open....
the prolem is that my application works on network (lan) and when a report launch from a first client is open the other client works very slowly...when the first client closes the report then my application begin to work well again...
why it happen the report isn't big....i have try to chenge the connection with database whith oledb and also with ODBC...
but always is slow....
I hope you understand my bad english...i'm italian....

thanks in advance..

Nicla from Italy

NIKITA Profilo | Newbie

mi sono accorta dopo che il sito era in italiano......ops
comunque riscrivo quello che intendevo ....

ho un'applicazione (fatta in .net 2003 - database ACCESS) che lavora in rete (pochi client comunque) quando lancio una stampa in anteprima da uno dei client ..agli altri client (al primo no) rallenta (di tanto) la velocità dell'applicazione....fino a che non chiudo la stampa dal primo client....e poi ritorna veloce..
ho provato sia con la conessione OLEDB che con la ODBC.....ma niente, fino a che non chiudo il report e quindi si chiude anche la connessione db va tutto lento......

è normale????o faccio qualcosa di sbagliato???

totti240282 Profilo | Guru

forse access nn gestisce troppi utenti,conviene passare ad altri mdb,tipo msde.

C'è solo un capitano !!!!!!

Brainkiller Profilo | Guru

>forse access nn gestisce troppi utenti,conviene passare ad altri
> mdb,tipo msde.

Non c'entra niente Access consente di creare anche progetti abbastanza evoluti con più utenti e anche con milioni di record.

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

Brainkiller Profilo | Guru

>ho provato sia con la conessione OLEDB che con la ODBC.....ma
>niente, fino a che non chiudo il report e quindi si chiude anche
> la connessione db va tutto lento......
>
>è normale????o faccio qualcosa di sbagliato???

Ciao Nikita,
allora non è normale assolutamente. Il rallentamento lo verifichi solo su un client o su tutti i client ? Questo per capire se è un problema di database oppure di programma Crystal sulla macchina su cui lo stai usando.

Seconda domanda è, che tipo di query stai lanciando per creare il report ? Ritorna un'enorme quantità di dati ? E' molto complessa e quindi richiede tempo per essere ritornata ?

Ciao


David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

freeteo Profilo | Guru

ciao,
aggiungo 1a domanda a quelle di David:
- hao precaso campi blob? ovvero "ole" dove parcheggi dentro immagini o documenti o cose pesanti?

sia per access che sul report, xche magari è lento a caricarsi perche ha troppe cose grafiche...

Matteo Raumer
.net addicted :-)
http://blogs.dotnethell.it/freeteo

NIKITA Profilo | Newbie

Ragazzi io mi sa che sbaglio qualcosa.....
perchè non ho query non ho campi ole non ho documenti che passo e va piano anche se nel report c'è solo una tabella......e anche se i client sono solo 2....
Cioè io non faccio query per filtrare i dati perchè devo ad esempio visualizzare tutti i clienti della mia tabella cienti....
quindi faccio solo quanto scritto sotto:

Imports CrystalDecisions.Shared
Imports CrystalDecisions.CrystalReports.Engine

Public Class report
Inherits System.Windows.Forms.Form

Dim crReportDocument As New ReportDocument
Public PassaggioSelezioneReport As String

Private Sub CrystalReportViewer1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CrystalReportViewer1.Load
Logdatabase()
crReportDocument.Load(patharc & Nomestampa)
CrystalReportViewer1.ReportSource = crReportDocument
If Len(PassaggioSelezioneReport) > 0 Then
CrystalReportViewer1.SelectionFormula = PassaggioSelezioneReport
Else
CrystalReportViewer1.SelectionFormula = ""
End If
CrystalReportViewer1.RefreshReport()

End Sub

Private Sub Logdatabase()

Dim crtableLogoninfo As New TableLogOnInfo
Dim crConnectionInfo As New ConnectionInfo
Dim CrTables As Tables
Dim CrTable As Table

crReportDocument.Load(patharc & Nomestampa)

With crConnectionInfo
.ServerName = "cst" ' mio odbc
End With

CrTables = crReportDocument.Database.Tables

For Each CrTable In CrTables
crtableLogoninfo = CrTable.LogOnInfo
crtableLogoninfo.ConnectionInfo = crConnectionInfo
CrTable.ApplyLogOnInfo(crtableLogoninfo)
CrTable.Location = CrTable.Location.Substring(CrTable.Location.LastIndexOf(".") + 1)
Next
CrystalReportViewer1.ReportSource = crReportDocument
End Sub

Private Sub report_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed
crReportDocument.Close()
End Sub

End Class

Manca qualcosa??? Il report viene visualizzato correttamento ma finchè non lo chiudo e quindi fa il
crReportDocument.Close()
l'altro client collegato in rete va lentissimo (ho notato che è lento quando faccio il Fill).....

Grazie mille per le vs risposte...
Nicla

NIKITA Profilo | Newbie

Toc toc...
Scusate ancora per il disturbo..ma non sono ancora riuscita a risolvere il mio problema..

Praticamente mi rimane lento il programma SOLO quando ho un rpt aperto...e SOLO sugli altri client connessi in rete(anche solo 1)...
ho notato che rallenta molto sul Fill del oledbdataadapter e quando uso il datareader che tenta di aprire e chiudere la connessione....lui funziona ma ci mette 10 secondi tutte le volte che passa su un fill o su un connection.close o connection.open....(dato che lo faccio spesso immaginate quanto ci impiega a visualizzare un record...!!)
Poi se chiudo l'rpt riparte ad andare veloce come per magia.....
Non so proprio cosa fare..ma non vorrei dover mettermi dietro a convertire tutto in sql....(che poi chi sa se andrà almeno)...
Vi prego una manina..
Grazie Nicla

freeteo Profilo | Guru

ciao,
prova a dare il parametro di usare 1file temporaneo quando fai il load del report crReportDocument.Load(patharc & Nomestampa, OpenReportMethod.OpenReportByTempCopy) cosi crei 1altro file...che nn sia 1probelma dell'oggetto report.
Poi io ti consiglio di mettere il codice per caricare il report su 1a funzione che chiami dal load e non in quello del "reportviewer1", io piuttosto la chiamerei sul "form_load"...

Poi rimango senza parole 1a cosa cosi' non mi è mai capitata, anche costruendolo "pesante" appositamente...:-(
da me funziona e non ha problemi...forse arrivano da qualcos'altro....
ciao

Matteo Raumer
.net addicted :-)
http://blogs.dotnethell.it/freeteo

NIKITA Profilo | Newbie

Niente da fare...non capisco proprio cosa posa essere il problema!!!
avete altre soluzioni????


Grazi Nicla


Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5