Stampa di dati parziali

Ciao Antonio

Ho una domanda per te:
da un database se volessi stampare solo la ricerca filtrata dei dati, como posso fare?

Grazie come sempre

Alan

Ciao Alan,
dipende da come stampi ora tutti i dati… :wink:

Se stampi da un record set allora quello “filtrato” (se filtrato tramite la query) usabile direttamente per la stampa (forse devi modificare il codice per passare il record set come parametro della stampa e non direttamente nel codice)

Altrimenti dovresti darmi qualche indicazione in pi per capire il tuo problema.

Ciao Antonio

Innanzitutto grazie 1000 per prenderti il tempo di rispondere.

Dim MasterDatabase As New SQLiteDatabase
// Set Database File
MasterDatabase.DatabaseFile =  SpecialFolder.Desktop.Child("OneMarketAmerica_2015_31.sqlite")
// Connect to the database
If MasterDatabase.databaseFile.Exists Then
  
  // The database file already exists, so we want to connect to it.
  If MasterDatabase.Connect = False Then
    
    // there was an error connecting to the database
    MsgBox("Database Error: " + Str(MasterDatabase.ErrorCode) + EndOfLine + EndOfLine + MasterDatabase.ErrorMessage)
    
    Return
  End If
Else
  MsgBox("Database not found.")
  Return
End If

'dim filter, stringaRicerca As  string 
'stringaRicerca= Uppercase(ControlloCliente.Text)
'filter= "Cellulare"

// Build the SQL statement that will be used to select the records
Dim sql As String = "SELECT * FROM Cliente"
dim sql_filtro as String = "SELECT * FROM Cliente"
Dim rpt As New ListOfProducts
// Now we select the records from the database and add them to the list.
Dim rs As recordSet
if CheckBox1.State=CheckBox.CheckedStates.Checked then
  rs = MasterDatabase.sqlSelect(sql)
else 
  rs= MasterDatabase.SQLSelect(sql_filtro)
end 
If rs = Nil Then
  Beep
  MsgBox("No records found to print.")
Else
  Dim ps As New PrinterSetup
  // set the resolution to 300 DPI for printing
  ps.MaxHorizontalResolution = 300
  ps.MaxVerticalResolution = 300
  
  If ps.PageSetupDialog Then
    Dim g As Graphics
    g = OpenPrinterDialog(ps, Nil)
    If g <> Nil Then
      
      // if the report runs successfully
      If rpt.Run(rs, ps) Then
        rpt.Document.Print(g)
      End If
    End If
  End If
End If

Con questo codice ed utilizando il report posso stampare tutta la informazione presente nel mio database.

Pero invece di stampare tutto il database vorrei stampare solo la informazione che ho filtrato quindi magari solo le persone che hanno gli occhi verdi o solo quelle che si chiamano Domenico…

Mi puoi dare una mano come sempre?

Grazie 1000

Alan

Il codice di per se va bene (suppongo sia una somma e non una funzione unica)

il punto che la sql filtrata identica a quella non filtrata!

forse dovresti aggiungere i filtri sui campi che ti interessano
ad esempio “select * from clienti where sesso=‘F’”

ma questo dipende dai campi sul db e da cosa puoi leggere dall’interfaccia.

Hai ragione non ci avevo pensato…

ci provo e ti dico come mi va.

Come sempre grazie Antonio

Alan

Ciao Antonio

Devo correggere la mia domanda che sicuramente ha portato fuori strada: non volevo stampare solo dei dati parziali, quindi va bene il filtro da te suggerito ma voglio stampare il record CORRENTE.

Il codice che ti ho postato in precedenza stampa tutto il DB , quindi ok , ma non sono ancora riuscito a far stampare solo il RECORD CORRENTE , sono proprio andato in pallone…

please help

Ciao Antonio

Sempre stato giusto il tuo consiglio… non mettevo le virgolette…

Dim sql As String =(“SELECT * FROM Cliente WHERE TattooStile = '” +(tattoo_stile.Text) + “’”)

adesso funziona perfetto

Ciao