Toon posts:

[Crystal Reports - VB - SQL-server] Installeren

Pagina: 1
Acties:

Verwijderd

Topicstarter
Voor een stuk maatwerksoftware maak ik gebruik van een aantal Crystal Reports. Deze rapporten halen hun data uit SQL-server. De rapportjes open ik vanuit VB, en worden direct afgedrukt (of afdrukvoorbeeld op scherm). Op zich werkt het allemaal prima.

Als ik mijn maatwerksoftware nu installeer bij de klant, denken de rapportjes nog steeds dat ze de data vanaf de server hier op mijn kantoor moeten halen. Ik moet per rapport dus ter plekke nog instellen dat ze de data uit een andere SQL-server halen. Niet echt handig vind ik. Weet iemand daar een oplossing voor, bijvoorbeeld dat ik de Server vanuit code aan kan geven ofzo?

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 10-09 14:16

Crazy D

I think we should take a look.

Afhankelijk van wat je gebruikt om de reports te tonen. Ik heb ooit met een Crystal Reports API raportjes kunnen aanpassen,
waaronder het zetten van de server.
Even gauw opgezocht, ik kan 'm niet runnen want ik heb geen CR hier, maar met o.a. de API crPESetNthTableLogOnInfo (crwrap32.dll) zette ik de server gegevens. Maar ja we hadden bij die werkgever de developer editie van CR, incl. een hoop helpfiles met uitleg over de verschillende functies.

Exact expert nodig?


Verwijderd

Topicstarter
Bedankt voor je reactie. Wij hebben ook de developper editie. Ik ga even kijken of ik met die API uit de voeten kom.

  • RobzQ
  • Registratie: Februari 2000
  • Laatst online: 21-12-2020

RobzQ

greedy as a pig

Je moet idd vanuit je eigen code zelf de verbinding opzetten naar de database en niet mbv een wizard.

..so be wary of any man who keeps a pig farm..


Verwijderd

Topicstarter
Ik maak gebruik van Active Data (ADO), waarbij ik een ADO-recordset stuur naar het rapport. Ik gebruik vervolgens devolgende code om het rapport af te drukken:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Public Function AfdrukkenRapport(rs As ADODB.Recordset, strRapport As String)

    Dim cryApp As CRAXDDRT.Application
    Dim cryRep As CRAXDDRT.Report
    Dim rsData As ADODB.Recordset
    
    Set rsData = New ADODB.Recordset
    Set rsData.DataSource = rs.DataSource
    
    Set cryApp = New CRAXDDRT.Application
    Set cryRep = New CRAXDDRT.Report
    Set cryRep = cryApp.OpenReport(App.Path & "\" & strRapport)
    
    cryRep.Database.SetDataSource rsData
    cryRep.ReadRecords
    cryRep.PrintOut False

    Set cryRep = Nothing
    Set cryApp = Nothing
    Set rsData = Nothing

End Function

Toch vraagt het rapport om een server als ik het doe met een andere SQL-server als datasource... :'(

Verwijderd

Ik maak meestal gebruik van DSN ipv van native SQL en gebruik ook CR api's om aan te geven welke DSN het rapport gebruikt. Hiervoor moet echter wel in CR de db locatie verwijderd worden. In CR onder menu database bij Set Location.. staat altijd de fysieke db naam. Deze kan je weg halen. (moet echter wel voor elke tabel die het rapport gebuikt gedaan worden)

(ik maak gebruik van CR7)

Verwijderd

Topicstarter
Dat lijkt me een goede tip. Ik maak gebruik van versie 8.6, daar zit dat inderdaad ook in het menu...

Thanx anyone...
Pagina: 1