Newsgroup: it.comp.lang.visual-basic
Titolo: Crystal report e db non referenziati

Ho due tabelle:
Una fatture e una dettagli fattura
Le due tabelle non usano l'integrità referenziale.
Hanno un campo in comune (ref) che contiene il riferimento.
In fatture ho i dati di testa della fattura mentre in dettagli fattura
ho l'elenco degli articoli presenti nella fattura che sono identificati dal
campo ref
Ora dovrei stampare la fattura ma non riesco a trovare il modo di far
stampare gli articoli
in base al ref estratto dalla tabella fattura.
Quando lancio la stampa faccio
..........
    Case "fatture"
      sqlrsPrint = "SELECT* FROM fatture INNER JOIN dati_fatture ON
fatture.rif = dati_fatture.rif_fattura WHERE fatture.numero LIKE '" & numero
& "'"
      rsPrint.Open sqlrsPrint, DbConFat, adOpenKeyset
  End Select
'Reindirizzamento Database
  Set CRDb = Report.Database
  Set CRDbTables = CRDb.Tables
  For Each CRDBTable In CRDbTables
    Select Case rptToPrint
      Case "articoli", "clienti"
        CRDBTable.Location = DbPath & "DATI.mdb"
      Case "fatture"
        CRDBTable.Location = DbPath & "FATTURE"
    End Select
  Next
In CR ho due tabelle:
Fatture e Dati_Fatture
L'intestazione della stampa (tabella Fatture) la vedo Ok ma nell'elenco
degli articoli non vedo nulla :-)
Grazie a chi mi vorrà dare una mano.
alcau

Praticamente è come se dovessi avere due rs distinti.
Uno per l'intestazione e uno per i record degli articoli.
Minchia .......... ci sto uscendo paz.

 Fatture e Dati_Fatture
Di CR non so niente, ma ho la sensazione che di quelle due assegnazioni
sopra per CRDBTable.Location, una è ... incoerente (c'è un .mdb di troppo o
uno di meno e forse anche il nome DATI dev'essere DATI_FATTURE)..


Io ho usato questo sistema e, per adesso, funziona:
Dim rep As New crfatture
Dim con As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim crxapp As New CRAXDRT.Application
Dim crxreport As CRAXDRT.Report
Set crxreport = crxapp.OpenReport(App.Path & "\rptfattura.rpt")
If con.State = 0 Then
devi cambiare Provider
    con.Open "Provider=MSDataShape.1;Data
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path &
"\Gestione.mdb;Mode=ReadWrite;Persist Security Info=False"
End If
rs.Open "SHAPE {SELECT fattura, data, [id cliente], nominativo, indirizzo,
cap, località, provincia, [partita iva], pagamento, [riferimento mese],
appalto, venditore, [note] FROM qry_fattura where fattura=""" & fatt & """}
AS rsfatture APPEND ({SELECT pezzi, [id prodotto], descrizione,
prezzo,impiva, imponibile,fattura FROM qry_righe_fattura}  AS
rsdettaglifattura RELATE fattura TO fattura) AS rsdettaglifattura", con,
adOpenStatic, adLockReadOnly, adCmdText
crxreport.Database.SetDataSource rs
crxreport.PrintOut False, 3
rs.Close
Ciao
Fabio

 uno di meno e forse anche il nome DATI dev'essere DATI_FATTURE)..
Hai perfettamente ragione, (ho fatto un copia/incolla sbagliato)

Io ho fatto cosě:
 conShape.Open "PROVIDER=MSDataShape.1;Data
PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source= " & DbPath &
"db_FATTURE.mdb;Mode=ReadWrite;Persist Security Info=False"
rsPrint.Open "SHAPE {select * from fatture WHERE fatture.numero LIKE '" &
numero & "'} AS fatture APPEND ({select * from     dati_fatture } AS
ChildCMD RELATE numero TO numero) AS dati_fatture", conShape, adOpenStatic,
adLockOptimistic
'Reindirizzamento Database e Report padre
  Set CRDb = Report.Database
  Set CRDbTables = CRDb.Tables
  For Each CRDBTable In CRDbTables
        CRDBTable.Location = DbPath & "db_FATTURE.mdb"
  End Select
  Next
  If (Report.HasSavedData) Then Report.DiscardSavedData
  Report.Database.SetDataSource rsPrint
Io non uso i report salvati (uso rdc 6) e nel report ho due tabelle (fatture
e dati_fatture)
Ho provato ad inserire un gruppo fatture.numero e sotto la sezione detail ho
inserito i campi dei dati_fattura(articoli) ma non visualizzo nulla.
:-(