Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 19-11-2002, 14:47   #1
Carmen
Senior Member
 
Iscritto dal: Jul 2001
Messaggi: 367
Sql per la somma dei dati

Ciao.


in un modulo *.BAS irserisco il questo codice

Private DB As Database
Private rsVari As Recordset


quando mi serve nei vari form del progetto utilizzo questo codice per fare delle determinate somme filtrando i dati dal DB:

Set DB = OpenDatabase(App.Path & "\NomeDB.mdb")
Set rsVari = DB.OpenRecordset("SELECT Sum(Importo) as Totale, Sum(Importo*aliquotaIVA/100) as Iva FROM TabellaDB WHERE ID=" & Parametro)

If IsNull(rsVari("Totale")) = False And IsNull(rsVari("Iva")) = False Then
MsgBox rsVari("Totale")
MsgBox rsVari("Iva")
else
'nessun record che rispecchi i parametri di ricerca
end if


La cosa funziona tranquillamente, il problema che non riesco ad capire dove possa risiedere e che di tanto in tanto, capita che non mi fà più le somme. In pratica e come se L'SQL non filtri più i nessun dato. Se chiudo il programma ed rietro rifunziona.

Sinceramente non capisco cosa possa essere. Per questo chiedo un vostro parere, e se magari se si possa fare la stessa cosa utilizzando invece di un SQL un tipo di ricerca indicizzata. con il SEEK, sempre chè sia migliore rispetto all'SQL sopra citata.

spero in un vostro AIUTO!!!!!!!!

Carmen
Carmen è offline   Rispondi citando il messaggio o parte di esso
Old 19-11-2002, 18:05   #2
tas
Senior Member
 
L'Avatar di tas
 
Iscritto dal: Feb 2001
Città: Nordest
Messaggi: 217
Che strano... forse è un problema di memoria. Ti sei ricordata di rilasciare la memoria degli oggetti non più utilizzati? Esempio:
Codice:
Dim db As Database
Dim rs As Recordset
Dim sql As String

'creo oggetti...
Set db = OpenDatabase(App.Path & "\NomeDB.mdb")
sql = "SELECT Sum(Importo) as Totale, ..."
Set rs = db.OpenRecordset(sql)

'utilizzo gli oggetti

...

'in chiusura rilascio la memoria
rs.Close
db.Close
Set rs = Nothing
Set db = Nothing
tas è offline   Rispondi citando il messaggio o parte di esso
Old 20-11-2002, 00:03   #3
Carmen
Senior Member
 
Iscritto dal: Jul 2001
Messaggi: 367
Ciao. Si alla fine chiudevo sia DB.close che rs.Close.
Non avevo messo però:
Set rs = Nothing
Set db = Nothing

Due domande da farti:

1) Ai impostato L'SQL un pò diversa, la cosa può essere rilevante o meno rispetto alla mia versione?

2) Siccome eseguo in diversi punti più o meno queste operazioni penzavo di dichiarare una volta sola in un modulo *.BAS queste variabili:

Dim db As Database
Dim rs As Recordset
Dim sql As String


Come:
public db As Database
public rs As Recordset
public sql As String


ovviamente subito dopo ogni esecuzione della routine rilascio subito la memoria:

rs.Close
db.Close
Set rs = Nothing
Set db = Nothing

Cosa ne penzi???. Ciao
Carmen è offline   Rispondi citando il messaggio o parte di esso
Old 20-11-2002, 00:45   #4
tas
Senior Member
 
L'Avatar di tas
 
Iscritto dal: Feb 2001
Città: Nordest
Messaggi: 217
Risposta 1: nessuna differenza, ho usato la variabile sql solo per migliorare la leggibilità del codice

Risposta 2: nel modo come l'hai descritto non serve a nulla, piuttosto farei così:
Codice:
'in un modulo .bas :
Public db As Database

'nell'evento Load del form principale:
Set db = OpenDatabase(App.Path & "\NomeDB.mdb")

'nell'evento Unload del form principale:
db.Close
Set db = Nothing

'dentro ad una qualsiasi procedura:
Dim rs As Recordset
Dim sql As String

sql = "SELECT ... "
Set rs = db.OpenRecordset(sql, dbOpenDynaset)
...
rs.Close
Set rs = Nothing
In sostanza tengo aperto il database per tutto il tempo nel quale l'applicazione rimane aperta, in maniera molto simile a quello che fa Access. Quando ho bisogno di un recordset utilizzo la variabile db già inizializzata.

ciao
tas è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Guida all'acquisto: quale lavapavimenti ...
Google Maps su Android Auto introduce fi...
AMD Ryzen 5 5500F: fino al 16% di presta...
L'ecosistema partner di Microsoft cresce...
Oracle registra un boom nella divisione ...
Amazon Prime Video sfida TikTok con le n...
L'uscita di Rayman Legends Retold &egrav...
Dazio UE sui pacchi extra UE, in Italia ...
La nuova lavatrice smart di Xiaomi ha tr...
Hai una PSP nel cassetto? Questo nuovo p...
Oracle presenta Java 27 con diverse novi...
Il microscopio dell'EPFL vede più...
Volvo avvia la produzione dei nuovi cami...
26 offerte Amazon da non perdere, da iPh...
Google Pixel 10 e 10a a 619€ e 399€: sco...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 16:48.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v