Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta
DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta
DLSS 4.5 introduce Dynamic Multi Frame Generation e MFG 6X, permettendo fino a cinque frame generati per ogni frame renderizzato. I test su Cyberpunk 2077 e 007 First Light mostrano forti incrementi di FPS e riduzione della latenza su RTX 5090 Laptop. Migliorano fluidità, stabilità e qualità visiva.
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Quattro modi di indossarlo, stessa app del Plaud Note Pro e integrazione con il desktop. Il registratore IA da indossare di Plaud eccelle in mobilità, ma resta vincolato all'abbonamento ed è facile da perdere
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro
Xiaomi ha portato Redmi Watch 6 anche sul mercato italiano, puntando su un display AMOLED da 2,07 pollici con picco di luminosità a 2000 nit, frame in alluminio da 9,9mm e un'autonomia dichiarata di 12 giorni. Lo smartwatch gira su HyperOS 3 e integra GPS, Bluetooth 5.4 e oltre 150 sport mode. Il tutto a meno di 100 euro
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-04-2002, 13:04   #1
Magnum2000
Senior Member
 
L'Avatar di Magnum2000
 
Iscritto dal: Mar 2001
Messaggi: 352
[VB]Compattare un database da programma: si può?

Ciao ragazzi!
Volevo chiedere se è possibile utilizzare un controllo di VB per inserire nel proprio programma una funzione che compatti un database Access.
Questa funzione dovrebbe servire a ripristinare un ordine sequenziale ai campi contatore, quando sono stati eliminati dei record con, appunto, dei campi contatore (scusate il gioco di parole).
Mi sbaglio?
Esiste un controllo del genere?
Grazie 1000!
__________________
"L'uomo che ha Fede è fortunato. Chi non ha Fede è una persona cui manca qualcosa nel profondo della sua esistenza. La Fede è speranza. L'uomo che abbandona questa speranza non è un uomo, è un disperato" [A. Zichichi]
Magnum2000 è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2002, 16:11   #2
tas
Senior Member
 
L'Avatar di tas
 
Iscritto dal: Feb 2001
Città: Nordest
Messaggi: 217
Non serve un controllo.

Se usi la libreria DAO basta scrivere così:

DAO.CompactDatabase(source, destination)

------

Se usi ADO, invece, devi caricare anche la libreria JRO (Microsoft Jet and Replicator object). Questo è un sample trovato su MSDN, che in più cripta il database:

Function EncryptDb(strSourceDB As String, _
strDestDB As String) As String
Dim jetEngine As JRO.JetEngine
Dim strSourceConnect As String
Dim strDestConnect As String

' Build connection strings for SourceConnection and
' DestConnection arguments.
strSourceConnect = "Data Source=" & strSourceDB
strDestConnect = "Data Source=" & strDestDB & ";" & _
"Jet OLEDB:Encrypt Database=True"

Set jetEngine = New JRO.JetEngine

' Compact and encrypt the database specified by strSourceDB
' to the name and path specified by strDestDB.
jetEngine.CompactDatabase strSourceConnect, strDestConnect

Set jetEngine = Nothing
End Function


Per fare solo la compattazione, basta modificare opportunamente la stringa di connessione.
tas è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2002, 23:05   #3
Magnum2000
Senior Member
 
L'Avatar di Magnum2000
 
Iscritto dal: Mar 2001
Messaggi: 352
Quote:
Originariamente inviato da tas
[b]Non serve un controllo.

Se usi la libreria DAO basta scrivere così:

DAO.CompactDatabase(source, destination)

------

Se usi ADO, invece, devi caricare anche la libreria JRO (Microsoft Jet and Replicator object). Questo è un sample trovato su MSDN, che in più cripta il database:

Function EncryptDb(strSourceDB As String, _
strDestDB As String) As String
Dim jetEngine As JRO.JetEngine
Dim strSourceConnect As String
Dim strDestConnect As String

' Build connection strings for SourceConnection and
' DestConnection arguments.
strSourceConnect = "Data Source=" & strSourceDB
strDestConnect = "Data Source=" & strDestDB & ";" & _
"Jet OLEDB:Encrypt Database=True"

Set jetEngine = New JRO.JetEngine

' Compact and encrypt the database specified by strSourceDB
' to the name and path specified by strDestDB.
jetEngine.CompactDatabase strSourceConnect, strDestConnect

Set jetEngine = Nothing
End Function


Per fare solo la compattazione, basta modificare opportunamente la stringa di connessione.
Moooolto interessante!
Ma perchè ci sono una stringa di partenza ed una di destinazione?
Se ho un file chiamato "db.mdb" e voglio compattarlo, strSourceDB sarà il path del programma con il file del database e strDestDB cos'è?
__________________
"L'uomo che ha Fede è fortunato. Chi non ha Fede è una persona cui manca qualcosa nel profondo della sua esistenza. La Fede è speranza. L'uomo che abbandona questa speranza non è un uomo, è un disperato" [A. Zichichi]
Magnum2000 è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2002, 23:07   #4
Magnum2000
Senior Member
 
L'Avatar di Magnum2000
 
Iscritto dal: Mar 2001
Messaggi: 352
Dimenticavo...
l'operazione di criptaggio (si chiama così?) in cosa consiste?
Se cripto un database, poi per leggerlo è diverso dal normale?
__________________
"L'uomo che ha Fede è fortunato. Chi non ha Fede è una persona cui manca qualcosa nel profondo della sua esistenza. La Fede è speranza. L'uomo che abbandona questa speranza non è un uomo, è un disperato" [A. Zichichi]
Magnum2000 è offline   Rispondi citando il messaggio o parte di esso
Old 25-04-2002, 17:04   #5
tas
Senior Member
 
L'Avatar di tas
 
Iscritto dal: Feb 2001
Città: Nordest
Messaggi: 217
L'operazione di compattazione non sovrascrive il database originale, ma lo copia in un nuovo file. Ecco perchè servono due stringhe!

L'operazione di crittografia impedisce la lettura dei dati da un editor di testo (come riporta la guida di Access), mentre risulta sempre leggibile da Access e ADO/DAO.
tas è offline   Rispondi citando il messaggio o parte di esso
Old 26-04-2002, 09:00   #6
Magnum2000
Senior Member
 
L'Avatar di Magnum2000
 
Iscritto dal: Mar 2001
Messaggi: 352
Quote:
Originariamente inviato da tas
[b]L'operazione di compattazione non sovrascrive il database originale, ma lo copia in un nuovo file. Ecco perchè servono due stringhe!

L'operazione di crittografia impedisce la lettura dei dati da un editor di testo (come riporta la guida di Access), mentre risulta sempre leggibile da Access e ADO/DAO.
1) Ma poi come faccio a dire al mio programma di caricare i dati dal nuovo file?
Si può eseguire la procedura, sovrascrivendo il vecchi file?

2)Con un editor di testo??
Che si può fare?
__________________
"L'uomo che ha Fede è fortunato. Chi non ha Fede è una persona cui manca qualcosa nel profondo della sua esistenza. La Fede è speranza. L'uomo che abbandona questa speranza non è un uomo, è un disperato" [A. Zichichi]
Magnum2000 è offline   Rispondi citando il messaggio o parte di esso
Old 26-04-2002, 16:36   #7
tas
Senior Member
 
L'Avatar di tas
 
Iscritto dal: Feb 2001
Città: Nordest
Messaggi: 217
Io di solito faccio così:
[list=1][*]eseguo la compattazione di ARCHIVIO.MDB sul file ARCHIVIO.TMP[*]se tutto è andato bene, rinomino ARCHIVIO.MDB in ARCHIVIO.001[*]rinomino ARCHIVIO.TMP in ARCHIVIO.MDB[/list=1]


Riguardo al discorso dell'editor di testo... diciamo che è un discorso di sicurezza. Se imposti una password per accedere ad un archivio, per un utente sprovvisto di password sarà impossibile aprirlo con Access o con ADO/DAO. Se però uno tenta lo stesso di carpire le informazioni contenute nell'archivio, riuscirà a leggere i testi contenuti con un editor di testo o meglio con visualizzatore binario... a meno che l'archivio non sia stato criptato!
tas è offline   Rispondi citando il messaggio o parte di esso
Old 26-04-2002, 18:26   #8
Magnum2000
Senior Member
 
L'Avatar di Magnum2000
 
Iscritto dal: Mar 2001
Messaggi: 352
Quote:
Originariamente inviato da tas
[b]Io di solito faccio così:
[list=1][*]eseguo la compattazione di ARCHIVIO.MDB sul file ARCHIVIO.TMP[*]se tutto è andato bene, rinomino ARCHIVIO.MDB in ARCHIVIO.001[*]rinomino ARCHIVIO.TMP in ARCHIVIO.MDB[/list=1]
Senti, so che la domanda che ti farò è un pò invasiva...
...però, se non ci si aiuta tra di noi..
Mi piacerebbe capire il meccanismo di compattazione; mi puoi aiutare? (non è da molto che utilizzo VB)
__________________
"L'uomo che ha Fede è fortunato. Chi non ha Fede è una persona cui manca qualcosa nel profondo della sua esistenza. La Fede è speranza. L'uomo che abbandona questa speranza non è un uomo, è un disperato" [A. Zichichi]
Magnum2000 è offline   Rispondi citando il messaggio o parte di esso
Old 27-04-2002, 11:15   #9
tas
Senior Member
 
L'Avatar di tas
 
Iscritto dal: Feb 2001
Città: Nordest
Messaggi: 217
Quote:
Originariamente inviato da Magnum2000
[b]

Senti, so che la domanda che ti farò è un pò invasiva...
...però, se non ci si aiuta tra di noi..
Mi piacerebbe capire il meccanismo di compattazione; mi puoi aiutare? (non è da molto che utilizzo VB)

La compattazione serve per recuperare lo spazio perso quando per esempio cancelli un record. Per motivi di performances, Jet non recupera quello spazio, in quanto tale operazione richiederebbe uno spostamento a volte ingente di dati.

Sempre per motivi di performances, viene creato in coda ad ogni tabella uno spazio vuoto maggiore di quello necessario per inserire un record. Questo blocco di byte verrà via via riempito di record, poi quando questo sarà pieno verrà creato un nuovo blocco e via dicendo. Anche in questo caso, l'operazione di inserimento di un nuovo blocco comporta rallentamenti generali al database, ma tale operazione viene eseguita una volta "ogni tanto" e quindi generalmente l'archivio continua ad essere veloce.

Compattando l'archivio (in realtà, con le ultime versioni del Jet, le operazioni CompactDatabase e RepairDatabase sono la stessa cosa) si va a recuperare tutto lo spazio inutile nelle varie tabelle.

Naturalmente, appena si andrà ad aggiungere un nuovo record, Jet inserirà di nuovo un blocco in coda alla tabella, vanificando in parte la compattazione appena svolta.
tas è offline   Rispondi citando il messaggio o parte di esso
Old 27-04-2002, 11:25   #10
Magnum2000
Senior Member
 
L'Avatar di Magnum2000
 
Iscritto dal: Mar 2001
Messaggi: 352
Quote:
Originariamente inviato da tas
[b]


La compattazione serve ...

...le operazioni CompactDatabase e RepairDatabase sono la stessa cosa) ...

HMMMM!
Mi potresti scrivere la sintassi completa di questi due comandi? (CompactDatabase e RepairDatabase)

Quale dei due mi consigli di utilizzare?
Che dici, mi conviene inserire nel mio programmino un pulsante che consenta di compattare il database?

Ah, ritornando al discorso del "Criptaggio", come faccio a leggere i dati una volta criptato il database?
La stringa di connessione cambia, vero?
__________________
"L'uomo che ha Fede è fortunato. Chi non ha Fede è una persona cui manca qualcosa nel profondo della sua esistenza. La Fede è speranza. L'uomo che abbandona questa speranza non è un uomo, è un disperato" [A. Zichichi]
Magnum2000 è offline   Rispondi citando il messaggio o parte di esso
Old 27-04-2002, 11:39   #11
Magnum2000
Senior Member
 
L'Avatar di Magnum2000
 
Iscritto dal: Mar 2001
Messaggi: 352
per TAS

All'indirizzo seguente dell'MSDN ho trovato questo codice per riparare un database:
http://msdn.microsoft.com/library/de...rdatabasex.asp

Codice:
Sub RepairDatabaseX()

    Dim errLoop As Error

    If MsgBox("Repair the Northwind database?", _
            vbYesNo) = vbYes Then
        On Error GoTo Err_Repair
        DBEngine.RepairDatabase "Northwind.mdb"
        On Error GoTo 0
        MsgBox "End of repair procedure!"
    End If

    Exit Sub

Err_Repair:

    For Each errLoop In DBEngine.Errors
        MsgBox "Repair unsuccessful!" & vbCr & _
            "Error number: " & errLoop.Number & _
            vbCr & errLoop.Description
    Next errLoop

End Sub
E' questo il metodo che dicevi?
Basta modificare il nome del database?
__________________
"L'uomo che ha Fede è fortunato. Chi non ha Fede è una persona cui manca qualcosa nel profondo della sua esistenza. La Fede è speranza. L'uomo che abbandona questa speranza non è un uomo, è un disperato" [A. Zichichi]
Magnum2000 è offline   Rispondi citando il messaggio o parte di esso
Old 27-04-2002, 16:37   #12
tas
Senior Member
 
L'Avatar di tas
 
Iscritto dal: Feb 2001
Città: Nordest
Messaggi: 217
Re: per TAS

Quote:
Originariamente inviato da Magnum2000
[b]
E' questo il metodo che dicevi?
Basta modificare il nome del database?
Dipende: quel codice è relativo a DAO, se invece usi ADO...

Codice:
jetEngine.CompactDatabase strSourceConnect, strDestConnect
(in ADO non esiste più RepairDatabase)

ciao
tas è offline   Rispondi citando il messaggio o parte di esso
Old 27-04-2002, 19:38   #13
Magnum2000
Senior Member
 
L'Avatar di Magnum2000
 
Iscritto dal: Mar 2001
Messaggi: 352
Re: Re: per TAS

Quote:
Originariamente inviato da tas
[b]

Dipende: quel codice è relativo a DAO, se invece usi ADO...

Codice:
jetEngine.CompactDatabase strSourceConnect, strDestConnect
(in ADO non esiste più RepairDatabase)

ciao
Aaaaa.
Ma, scusame se te lo ripeto, come faccio a fare un backup del database e rinominare quello vecchio?
__________________
"L'uomo che ha Fede è fortunato. Chi non ha Fede è una persona cui manca qualcosa nel profondo della sua esistenza. La Fede è speranza. L'uomo che abbandona questa speranza non è un uomo, è un disperato" [A. Zichichi]
Magnum2000 è offline   Rispondi citando il messaggio o parte di esso
Old 29-04-2002, 09:44   #14
tas
Senior Member
 
L'Avatar di tas
 
Iscritto dal: Feb 2001
Città: Nordest
Messaggi: 217
Ecco i comandi dei quali hai bisogno:
Codice:
FileCopy source, destination
Name oldpathname As newpathname
Kill pathname
  • FileCopy copia un file;
    Name permette di rinominare o spostare un file o una directory;
    Kill elimina un file
tas è offline   Rispondi citando il messaggio o parte di esso
Old 29-04-2002, 12:03   #15
Magnum2000
Senior Member
 
L'Avatar di Magnum2000
 
Iscritto dal: Mar 2001
Messaggi: 352
Quote:
Originariamente inviato da tas
[b]Ecco i comandi dei quali hai bisogno:
Codice:
FileCopy source, destination
Name oldpathname As newpathname
Kill pathname
  • FileCopy copia un file;
    Name permette di rinominare o spostare un file o una directory;
    Kill elimina un file

Vediamo un pò:

1)"source" e "destination" sono percorsi (senza il nome del file)
2)"oldpathname" e "newpathname" sono percorsi (con il nome del file)
3)"pathname" percorso con nome del file

Giusto?
__________________
"L'uomo che ha Fede è fortunato. Chi non ha Fede è una persona cui manca qualcosa nel profondo della sua esistenza. La Fede è speranza. L'uomo che abbandona questa speranza non è un uomo, è un disperato" [A. Zichichi]
Magnum2000 è offline   Rispondi citando il messaggio o parte di esso
Old 29-04-2002, 12:44   #16
tas
Senior Member
 
L'Avatar di tas
 
Iscritto dal: Feb 2001
Città: Nordest
Messaggi: 217
Guardati questi help su MSDN:
ciao
tas è offline   Rispondi citando il messaggio o parte di esso
Old 29-04-2002, 15:20   #17
Magnum2000
Senior Member
 
L'Avatar di Magnum2000
 
Iscritto dal: Mar 2001
Messaggi: 352
Quote:
Originariamente inviato da tas
[b]Guardati questi help su MSDN:
ciao
Grazie tas!
Quanta pazienza che hai.
__________________
"L'uomo che ha Fede è fortunato. Chi non ha Fede è una persona cui manca qualcosa nel profondo della sua esistenza. La Fede è speranza. L'uomo che abbandona questa speranza non è un uomo, è un disperato" [A. Zichichi]
Magnum2000 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta DLSS 4.5: con Dynamic Frame Generation e MFG 6X ...
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere) Plaud NotePin S, il registratore IA si fa indoss...
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro Redmi Watch 6 in prova: lo smartwatch con ampio ...
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ...
Radeon RX 9070 GRE, AMD la porta in tutto il mondo | Recensione Gigabyte Gaming OC Radeon RX 9070 GRE, AMD la porta in tutto il mon...
TIM, rincari da luglio: come evitare l'a...
WWDC 26: Il Digital Markets Act dell'Uni...
WWDC 26: Apple Intelligence rivoluziona ...
Siri AI arriva alla WWDC 2026: nuove cap...
Alla WWDC 2026 arriva la nuova architett...
Tra schede madri, schede video e IA le n...
Nintendo, multa da 35 milioni di euro in...
L'amministrazione Trump valuta una parte...
WWDC 26: Apple rinnova il controllo pare...
Apple al WWDC 26 presenta iOS 27: Liquid...
Xbox, alla fine, dà ragione a Pla...
Minecraft Dungeons 2: Microsoft ha annun...
Synology al Computex 2026: nuova generaz...
Quobly raccoglie 115 milioni di euro per...
BYD batte sul tempo Tesla Roadster: avvi...
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: 22:59.


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