Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    SQL e datareport in [vb6]

    CiaoRagazzi ho un problema con una query e una stampa su datareport.

    Ho due tabelle ANAGRAFICA e TRATTAMENTI

    Nella prima ho l'elenco ei clienti, nella seconda ho l'elenco dei trattamenti che i clienti fanno. I Due database sono relazionati correttamente e infatti facendo una query direttamente in access, ottengo una tabella che mi da l'interpolazione dei dati.

    Tramite VB6 ho creato un datareport che mi dovrebbe stampare la scheda anagrafica del mio cliente e sotto tutti i trattamenti.
    Ho inserito questo codice:
    codice:
    Dim cn_db As ADODB.Connection
    Dim rs_db As ADODB.Recordset
    Dim dbfile As String
    Dim mSQL As String
    
    ' nome database
    dbfile = "alfazer.mdb"
    
    ' apre la connessione al database
    Set cn_db = New ADODB.Connection
            cn_db.ConnectionString = _
            "Provider=Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source=" & dbfile & ";" & _
            "Persist Security Info=False"
            cn_db.Open
    
    ' seleziona i dati
        mSQL = "SELECT * FROM ANAGRAFICA WHERE COGNOME='" & Form1.List1 & "'"
    
    ' prende i dati
        Set rs_db = cn_db.Execute(mSQL, , adCmdText)
    
    foto = rs_db("foto")
    
    'Porta il Grafico nella pagina di stampa:
            With DataReport1.Sections("Section1")
            
    'Imposta le dimensioni dell'immagine:
                With .Controls("Image1")
                    .Height = 2190
                    .Top = 2940
                    .Left = 6360
                    .Width = 2100
                    .PictureAlignment = rptPACenter
                    .SizeMode = 2
                    Set .Picture = LoadPicture(foto)
                    
                    'C:\Documents and Settings\Ale\Documenti\Immagini\firma.jpg
                End With
            End With
    ' manda i dati al report
        Set DataReport1.DataSource = rs_db
        DataReport1.WindowState = vbMaximized
        DataReport1.Show vbModal
    
    ' chiude il database
        rs_db.Close
        cn_db.Close
        Set rs_db = Nothing
        Set cn_db = Nothing
    
    End Sub

    E giustamente mi stampa la scheda anagrafica.
    Come faccio ora a dirgli che nello stesso report voglio tutti i trattamenti che ha fatto questo cliente. Mi spiego meglio, fare una SQL di filtro mi sembra ovvio e pensavo di farla così:

    SQL = "SELECT * FROM TRATTAMENTI WHERE COGNOME="COGNOME""


    il mio problema è: all'interno di quel codice che ora uso come posso inserire una nuova SQL e mandare i dati al datareport?


  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    357
    Prima della chiusura del recordset rs_db
    codice:
    Dim Rs As ADODB.Rceordset
    SQL = "SELECT * FROM TRATTAMENTI WHERE COGNOME='" & rs_db!COGNOME &"'" 
    Rs.CursorLocation = adUseClient
    Rs.Open SQL, cn_db, adOpenKeyset, adLockOptimistic
    do until  Rs.EOF
    
    'qui esegui la stampa trattamenti
    
      Rs.Movenext
    Loop
    Rs.Close
    'prima di queste istruzioni
    ' chiude il database
        rs_db.Close
        cn_db.Close
        Set rs_db = Nothing
        Set cn_db = Nothing

  3. #3
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Da quest'ultimo post mi sorgono le seguenti domande, grato se mi vorrete rispondere dato che attualmente uso il DataEnvironment, che vorrei lasciare.
    In questo modo i records vengono stampati in un'unica colonna ? Così come inseriti nella Tbl TRATTAMENTI.
    Se invece si volesse inserire i records in una forma tabellare, occorrerebbe inserire nel DataReport dei controlli RptTxt o RptLbl e poi inserire in quest'ultimi controlli il risultato di una Select?
    LM

  4. #4

    nun VA !?!?!?!?!

    Rieccomi ... ho inserito il codice così, ma niente

    codice:
    Dim cn_db As ADODB.Connection
    Dim rs_db As ADODB.Recordset
    
    Dim dbfile As String
    Dim mSQL As String
    
    ' nome database
    dbfile = "alfazer.mdb"
    
    ' apre la connessione al database
    Set cn_db = New ADODB.Connection
            cn_db.ConnectionString = _
            "Provider=Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source=" & dbfile & ";" & _
            "Persist Security Info=False"
            cn_db.Open
    
    IDLIST1 = List1.ItemData(List1.ListIndex)
    
    ' seleziona i dati
        mSQL = "SELECT * FROM ANAGRAFICA WHERE id=" & IDLIST1 & ""
    
    ' prende i dati
        Set rs_db = cn_db.Execute(mSQL, , adCmdText)
    
    foto = rs_db("foto")
    
    'Porta il Grafico nella pagina di stampa:
            With DataReport1.Sections("Section1")
            
    'Imposta le dimensioni dell'immagine:
                With .Controls("Image1")
                    .Height = 2190
                    .Top = 2940
                    .Left = 6360
                    .Width = 2100
                    .PictureAlignment = rptPACenter
                    .SizeMode = 2
                    Set .Picture = LoadPicture(foto)
                    
                    'C:\Documents and Settings\Ale\Documenti\Immagini\firma.jpg
                End With
            End With
    ' manda i dati al report
    
    
    SQL = "SELECT * FROM SEDUTE WHERE IDCLIENTE =" & IDLIST1 & ""
    Set rs_db = CreateObject("ADODB.Recordset")
    rs_db.Open SQL, cn_db, 3, 1
    
    Do Until rs_db.EOF
    
    
    data = rs_db("data")
    trattamento = rs_db("trattamento")
    
    'qui esegui la stampa trattamenti
    
        Set DataReport1.DataSource = rs_db
        DataReport1.WindowState = vbMaximized
        DataReport1.Show vbModal
    
    
      rs_db.MoveNext
    Loop
    
    
    ' chiude il database
        rs_db.Close
        cn_db.Close
        Set rs_db = Nothing
        Set cn_db = Nothing
    Mi dice Impossibile trovare datafield Nome, epure cè.
    Se però tolgo la seconda sql e il ciclo con il loop funziona.

    il problema è che sulla prima tabella ho lascheda del cliente, e quindi non devo fare nessun ciclo, nella tabella sedute invece per quel cliente potrei aver tanti record, quindi devo trovare il modo di fare il ciclo sul datareport. Come si fà?

    Help ho finito mi manca solo questo per compilare?!?!?!?!?!?!?!?!


  5. #5

    UP

    Ragazzi datemi una mano perchè le sto davvero provando tutte senza succeso.... mi manca solo questo per finire il prg



  6. #6

    UP

    Ragazzi non ce nessuno che può aiutarmi non penso che per esperti programmatori come voisia difficile....


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.