Newsgroup: it.comp.lang.visual-basic
Titolo: DataReport senz asorgente dati

Ciao a tutti,
ho un piccolo problema con i data report......siccome non li ho mai usati mi
trovo un po in confuzione.-..
Ho da completare una piccola applicazione che deve produrre una stampa (e
anteprimma), per la quale sto utilizzando i datareport.
Non ho creato un DataEnvironment, ma ho istanziato un oggetto ADODB come
recordset, per sfruttare una query sql classica (select * from tabella
where......).
Nel datareport ho inserito tutti i campi necessari, sia rptLabel che
rptTextBox.
Ho poi creato una funzione di aggregazione per mandare al datareport le
informazioni estrapolate dalla query.
ma quando si tratta di visualizzare il report mi dice che le sezioni non
sono associate a nessuna sorgente dati.....
Ecco il codice...
[salto la funzione che imposta ed esegue la query di selezione perchč
testandola funziona correttamente]
Public ADOReport as ADODB.Recordset '(variabile pubblica a livello di
modulo)
public function AdoConn (strQuery as string)
'questa funzione si occupa di eseguire la connessione al recordset
Dim AdoPrnConn as string
ADOPrnConn = "DSN=Pippo"    ' uso un DSN perchč l'utente l'ha espressamente
richiesto
Set AdoReport = New ADODB.Recordset
ADOReport.CursorType =adOpenKey
ADOReport.LockType = adLockOptimistic
' testo se la connessione e' gia aperta per evitare errori
if  ADOReport.State then
   ADOReport.Close
end if
ADOReport.Open strQuery, ADOPrnConn, , , adCmdText
End function
public function BuildReport()
' costruisco il report fisicamente
Set RptReport.DataSource = ADOReport
with RptReport
    .Sessions("IntestazioneCorpo").Controls("campo_1").DataField =
"<CampoDelRecordset>
    .Sessions("IntestazioneCorpo").Controls("campo_2").DataField =
"<CampoDelRecordset>
    .Sessions("IntestazioneCorpo").Controls("campo_3").DataField =
"<CampoDelRecordset>
    .Sessions("Corpo").Controls("campo_4").DataField = "<CampoDelRecordset>
    .Sessions("Corpo").Controls("campo_5").DataField = "<CampoDelRecordset>
    .Sessions("Corpo").Controls("campo_6").DataField = "<CampoDelRecordset>
end with
end function
Ovviamente la funzione viene richiamata quando premo il pulsante "Stampa"
dalla form.
Concludo dicendo che nel report ho assegnato a ogni campo TextBox, Sia
ADOReport come DataMember, sia il nome del campo come DataField
In questo caso si verifica il seguente errore... "Impossibile trovare
DataField  'ADOReport.NomeCampo'"
Se invece non dichiaro il DataMember e il DataField dei campi..."le sessioni
del report non corrispondono alla fonte dati"
Chi mi puo suggerire qualcosa?
Grazie
Emanuele

     "<CampoDelRecordset>
Sessions?
Non è che volevi scrivere Sections?
Nel caso, come mai non ti si è inchiodato?
Hai messo Option Explicit?
Hai qualche On Error Resume Next?
Alberto


Si alberto hai ragione, ho sbagliato a digitare nel post....
Sections
Ho inserito Option Explicit com esempre nei form
Non ho Error resume next appunto perche volgio capire dove possono incorrere
degli errori.
E' come se non riuscisse  a leggere i record dalla sorgente ADO....
difatti mi dice "impossibile trovare  DATAFIELD. = ADOREPORT.NomeCampo
non so piu' dove cercare...
anceh perche la conenssione ADO è giusta difgatti ciclando su ADOReport, mi
da tutti  i valori dei campi , i nomi sono corretti sia nella sorgente che
nel DataReport....
Sigh
Grazie
EManuele