Newsgroup: it.comp.lang.visual-basic
Titolo: DataReport - DataEnvironment

Buona giornata a chi mi legge !!,
non riesco a risolvere questo problema:
creato DataEnvironment con dati da tabella
creato DataReport utilizando DataEnvironment
ora in DataReport si presentano tutti i record contenuti nella tabella , e 
alla pressione del tasto stampa, vengono stampati tutti i record.
è possibile indirizzare un solo record con indice al DataReport per la 
stampa ??
io stò cercando di stampare un record selezionato con una ListView ???
grazie a tutti voi !!

 stampa ??
Se crei un parametro nel command del dataenvironment si, con il 
parametro che accetta, dico a caso, la chiave primaria della tabella in 
oggetto.
Oppure Ti crei tutto al volo, nel senso che ti crei un recordset 
disconnesso con solo i dati che devi stampare e passi quello al datareport.
ciao
Stefano

 datareport.
ho tentato come detto nel primo caso, risultato non riuscito.
con il secondo caso mi succede che:
carico in datareport il record e stampo,
faccio una seconda selezione, il recordset viene caricato ma in datareport 
mi risulta solo il primo record
probabilmente devo rielaborare (Refresh ??) la dataenvironment ma non 
capisco come,
(scusate stò utilizzando solo da un mese il linguaggio vb)
grazie 

 grazie 
Prova a postare il codice.
ciao
Stefano

 Stefano
nella form di richiesta stampa :
====================  carico i dati nei textbox text1(da 1 a 54)  dalla 
tabella XXXXXX =====
uso il codice  RS = DB.OpenRecordset(TABOPEN, dbOpenDynaset) ecc
(uso questo sistema perchè in precedenza non avevo mai provato ad udare i 
dataenvironment tentando ora di capirli)
poi li invio in una listview lstADD per la selezione
======== sub di  selezione =============================
Private Sub lstADD_ItemClick(ByVal Item As MSComctlLib.ListItem)
    Text1(0) = lstADD.SelectedItem.text
    For i = 1 To Text1.UBound
    Text1(i) = lstADD.SelectedItem.SubItems(i)
    If Text1(i) = "0,00" Or Text1(i) = "0" Then Text1(i) = " "
    Next i
    mnuAggDati.Enabled = True
    mnuInsDati.Enabled = True
    mnuRicDati.Enabled = True
    mnuRimDati.Enabled = True
    lstADD.Enabled = False
    lstADD.Visible = False
    If Text1(53) = "AN" Then ctlTransparent1.Visible = True
End Sub
============ sub invio stampa ====================================
============ STP-FAT è la tabella che contirnr i record da stampare 
==========
Private Sub mnuStaDati_Click()
        CerID = 0
    EnterRecordset ("STP-FAT")
    Do While Not RS.EOF
        CerID = CerID + 1
        RS.FindFirst "ID LIKE '" & CerID & "*'"
        If RS.NoMatch Then GoTo SALTO5
    Loop
SALTO5:
============ CerID è il primo numero di contatore libero =========
            If Database.Existing = True Then
                RS.AddNew
    RS.Fields("ID") = CerID
    For i = 1 To Text1.UBound
    RS.Fields(i) = Text1(i)
    Next i
                RS.Update
                End If
========== da quì invio in datareport =================
DataReport2.Refresh
DataReport2.Show
End Sub
===========FINE CODICI CARICATI in questo momento ==============
(non è presente nessun altro codice riferito a DataEnvironment o DataRecord)
in precedenza ho provato inserendo:
DataEnvironment1.Connection1.Open
ma l' errore è che al secondo passaggio mi dice che la connessione è aperta
allora inserisco un
DataEnvironment1.Connection1.Close
e a questo punto mi dice che non trova la tabella della connessione
non elenco gli altri tipi di tentativi .anche con 
DataEnvironment1.Commands.Item(2).Execute
in ogni caso, se ti sembro troppo ignorante in materia, perdonami.
Ciao e grazie

 Ciao e grazie
Ma scherzi? Gli inizi sono sempre ostici, puoi il datareport non è certo 
il massimo della linearità.
Prova così, è solo uno spunto ma potrebbe servirti:
Crea un nuovo progetto,
aggiungi come riferimenti Microsoft ActiveX DataObjects 2.x
Aggiungi un Datareport (ma non il dataenvironment)
Nel form aggiungi un pulsante,
e poi nel codice del progetto incolla questo:
Option Explicit
Dim rs As ADODB.Recordset
Private Sub Command1_Click()
Dim iConta As Integer
Dim myRep As DataReport1
Set myRep = New DataReport1
     rs.Fields.Append "Nome", adVarChar, 50, adFldIsNullable
     rs.Fields.Append "Cognome", adVarChar, 50, adFldIsNullable
     With rs
         .Open
             For iConta = 1 To 50
                 .AddNew
                     .Fields("Nome").Value = "Nome :" & iConta
                     .Fields("Cognome").Value = "Cognome :" & iConta
                 .Update
             Next iConta
             Set myRep.DataSource = rs
             myRep.Sections("Section1").Controls("txtCognome").DataField 
= .Fields("Cognome").Name
             myRep.Sections("Section1").Controls("txtNome").DataField = 
.Fields("Nome").Name
             myRep.Refresh
             myRep.Show
         .Close
     End With
End Sub
Private Sub Form_Load()
     Set rs = New ADODB.Recordset
End Sub
perdona la forma non proprio elegante.
dovrebbe darti qualche spunto per il tuo caso.
ciao
Stefano

 e poi nel codice del progetto incolla questo:
Scusa, ho dimenticato di specificare che nel datareport, nella Section1 
devi aggiungere due RptTextBox, una con name "txtCognome" e una con name 
"txtNome"
ciao
Stefano

 ha scritto nel messaggio 
news:eudahe$7a$1...@fata.cs.interbusiness.it...

GRAZIE, con il tuo esempio ho intuito alcune cose su i DB,
così ho provato varie soluzioni prima sul tuo esempio, poi modificandolo con 
i miei dati, e alla fine ho risolto il problema semplicemente usando 
l'istruzione:
If DataEnvironment1.rsSTFATT.State = 1 Then 
DataEnvironment1.rsSTFATT.Requery
inserita nella sub :
Private Sub Command1_Click()
If DataEnvironment1.rsSTFATT.State = 1 Then 
DataEnvironment1.rsSTFATT.Requery
DataReport2.Refresh
DataReport2.Show
End Sub
 Pel il momento funziona,