Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Svuotare database

Salve a tutti,
avrei la necessità di svuotare alcune tabelle di un database access aperto
in vb attraverso il controllo data. La prima cosa che ho tentato è:
Data1.RecordSource = "DELETE * FROM Tab1"
Data1.Refresh
Ma mi da errore:<<Operazione non valida>>. Allora ho pensato di usare dei
cicli do loop e il metodo Data1.Recordset.Delete però io devo fare
quest'operazione su 2/3 tabelle anche con centinaia di record, quindi in
questo modo rischio di rallentare troppo il programma. Alte soluzioni?
Antonio Mirarchi

 soluzioni?
Connection.execute "DELETE * FROM Tabella" o ancora meglio dove consentito
"TRUNCATE TABLE Tabella".

 ha scritto

Probabilmente eseguendo quella query stai violando le regole di integrità
impostate nelle relazioni tra le tabelle.
Ciao SK

 Data1.Refresh
MyDataBase.Execute "DELETE FROM Tab1" ' ovvio che voglio cancellare tutti i
campi!
Ciao
--
Math Parser : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net

 "TRUNCATE TABLE Tabella".
Cosě non va!
Comunque grazie, problema risolto. Ah: ti ho mandato un'email privata in
risposta ad un'altro topic.
Antonio Mirarchi

 MyDataBase.Execute "DELETE FROM Tab1" ' ovvio che voglio cancellare tutti
i campi!
Contesto, fortissimamente!
Cancelli i contenuti/records, non la struttura/campi.

 Ma mi da errore:<<Operazione non valida>>.
Se non ricordo male e salvo buchi (oddio, con i vari Data più che probabili,
anzi, certi), ma, non avendo ri-provato, non insisto, c'è un * di troppo.

 in risposta ad un'altro topic.
Ricevuta!
A scanso di equivoci, per gli altri lettori del NG, si trattava di
informazioni attinenti alla mia campagna per il reclutamento di volontari
per il Sito Comune! ;-)

 Cosě non va!
In mysql ad esempio funge... la differenza fondamentale č che con il
truncate la tabella viene distrutta e ricreata (l'operazione č piů
rapida)... mentre con un delete le operazioni di scrittura insistono sui
dati esistenti e sono piů lente!

[*Lord Rayden*=
ray...@h.a.r.d.w.a.r.e.t.i.p.s.com
] ha scritto:

Confermo anche per SQL Server che migliora notevolmente i tempi per tale
funzione (che non distrugge la struttura, ma solo elimina _tutti_ i records
della tabella) rispetto a Delete, piů lenta (e piů veloce, invece, in
Access).
Chiaramente la Truncate non ammette una clausola Where, mente la Delete sě.

> anzi, certi), ma, non avendo ri-provato, non insisto, c'č un * di troppo.
No, no... Questo sicuro no. Del mio SQL sono certo. La sintassi č: DELETE
[campi] FROM [tabella]... dove per [campi] si puň scrivere la lista dei
campi oppure * per indicare tutti i campi.
Antonio Mirarchi

... dove per [campi] si può scrivere la lista dei campi oppure * per
indicare tutti i campi.
Non capisco ancora:
Se la Delete cancella records, che senso avrebbe specificare * per tutti i
campi o una lista per alcuni campi?
Il record viene cancellato, integralmente.
Per me è "Delete From Tab1" seguito da un'eventuale Where (e null'altro) che
indica i records da Delet-are
Non escludo, però, che un * (e persino un elenco di campi) possa essere
accettato da quelche motore bendisposto, ma certo vengono ignorati.

Chiaramente la Truncate non ammette una clausola Where, mente la Delete sì.
Da usare con discrezione: la TRUNCATE e' veloce perche' non tocca gli
indici.
-- 
ciao, hal

 indici.
non li azzera ? dovrebbe...

[*javalab*=
jav...@labrador.ca
] ha scritto:

Direi, almeno logicamente. Non può esistere un riferimento in un indice se
manca il record relativo.
Presumibilmente voleva dire che ne mantiene la struttura, come del resto
quella delle tabelle e relativi campi.



In realta' ho proprio fatto confusione: azzera si' gli indici e uno
dei motivi lo ha sicuramente indicato Lupo.
Quello che *non* fa la TRUNCATE e' loggare le cancellazioni.
-- 
ciao, hal

accettato da quelche motore bendisposto, ma certo vengono ignorati.
Secondo me e' qualche deviazione mentale di database fuori standard
come Access, in sql server ed in oracle si scrive
DELETE FROM nometabella
senza asterischi.
-- 
ciao, hal

 Cancelli i contenuti/records, non la struttura/campi.
Appunto, volevo sottilineare l'inutilitą di
DELETE * FROM tabella
E' ovvio che di un record non puoi cancellare alcuni campi sģ e altri no,
dove per cancellare si intende l'eliminazione fisica.
Credo inoltre che sia fuori standard SQL l'uso dell'asterisco.


 Credo inoltre che sia fuori standard SQL l'uso dell'asterisco.
Ahhh, sė, rileggendo, č chiaro.

Quello che *non* fa la TRUNCATE e' loggare le cancellazioni.
Per mysql la truncate cancella ilfile su disco e lo ricrea, mentre la
delete va a cancellare record per record all'interno del file (in
mysql ogni file su disco rappresenta un tabella, ogni directory un
database la cosa è molto comoda sia per il trasferimento che per il
backup... altro che ms sqlserver! :P)
Come da te riferito il truncate non restituisce il numero di record
cancellati perchè non li conta! O:-)

 Ahhh, sě, rileggendo, č chiaro.
Oh, sentite: io mi sono diplomato 3 mesi e mi ricordo che la mia prof di
informatica si raccomandava sempre di metterlo quel dannato asterisco nel
DELETE... Che mi posso dire?
Antonio Mirarchi

 ha scritto

che forse non intendeva l'asterisco :P
e speriamo che non delete :P:P

 e speriamo che non delete :P:P
Allora: siccome mi avevate messo i dubbi in testa, sapete che ho fatto (e
consiglio di fare anche a voi)? Ho aperto Microsoft Access XP, ho creato una
tabella qualsiasi, dopodichè ho creato una query con scritto DELETE FROM
Tabella1 (come dite voi)... Sapete che succede? Access mi da errore:<<La
query deve contenere almeno un campo di destinazione>>. Ora, io posso essere
cretino e fesso quanto volete e posso dire enormi boiate, però qui i fatti
parlano chiaro. Io ho fatto l'esperimento di cui sopra, se non mi credete
fatelo anche voi. Poi mettete l'asterisco e vedrete come funziona
benissimo...
Antonio Mirarchi

 ha scritto

scherzavo...
cmq, te l'hanno gia' detto. access, come in genere ms, non e' mai stato un
campione nel seguire gli standard. gia' usava l'asterisco al posto del
percento..
ciao, j.

 percento..
Uhm... Questo mi preoccupa. Sapevo già che l'access è uno dei peggiori DB in
circolazione, ma addirittura ora mi dite che non rispetta gli standard
dell'SQL... Ma allora per un anno intero che ho fatto a scuola? Ok, ok:
risparmiatemi la predica della scuola italiana inutile, tanto lo so da me.
Piuttosto ditemi: se volessi studiare un DB vero, cosa dovrei studiare?
Antonio Mirarchi

 ha scritto nel messaggio
news:bjpulj$207g$1...@half.spin.it...

Gradiremmo verifica, dopo le "illazioni" di j su frequentatori del ng in
stile eva robins...
;-P
ciao
ugo

 come Access,
no, persino lui accetta lo standard sql... (è tutto dire!)
ugo.delenda.cartago

 Piuttosto ditemi: se volessi studiare un DB vero, cosa dovrei studiare?
Prima di tutto, avendo l'idea di cosa sia un db, Il linguaggio SQL Standard
ANSI '92, non o un db ;-)
Tanto, poi, ogni db ha il suo dialetto e/o il suo non standard...

 ;-P
non illavo affatto: la robbins fra l'altro mi piace pure :)

 non illavo affatto: la robbins fra l'altro mi piace pure :)
[VM18-ON]
Domanda:
qui è la cagnetta che scrive?    ;-P
[VM18-OFF]
ciao
ugo

 ha scritto

visto che all'ultima ti ha risposto correttamente lupo, ne approfitto solo
per una nota.
e' vero che la scuola italiana e' in difficolta'. ma e' anche vero che da
una qualunque scuola non puoi sperare di uscire imparato su tutto. quello
che importa sono le *categorie* e gli *strumenti* (elasticita' mentale
innanzitutto) che ti formi, in una scuola o situazione equivalente.
il dramma non e' tanto che un programmatore americano medio pensa che madrid
sia in australia. e' che non gliene frega niente di saperlo. non gli hanno
insegnato la curiosita' per quello che non ha un immediato ritorno
economico.
ho imparato parecchio al campo cani, quando ci ho portato j: e infatti
allevatori e istruttori dicono in coro che il corso lo devono fare i
padroni, piu' che i cani, sempre. e molte cose importanti le ho imparate
seguendo i ng. qualunque situazione puo' essere 'scuola', se ti usi
l'impostazione giusta.
riassunto: se a scuola ti insegnavano sql92, magari era gia' uscito sql2003.
anche i migliori insegnanti fanno quello che possono, che non sara' *mai*
*esattamente* quello che devi fare tu. il punto e': tieni le basi e datti
una mossa, e non pensare mai che quello che stai usando (access, sqlserver,
oracle; vb, java, c) copra *tutto* il panorama.
ciao, j.

 [VM18-OFF]
no. perche', non e' graziosa ? :)

 oracle; vb, java, c) copra *tutto* il panorama.
Non ho mai pensato questo
Antonio Mirarchi

 panorama.
Mi piace molto quest'analisi, pur se solo abbozzata e mi trovo totalmente
d'accordo.
Gli insegnanti che più ho "amato", nei vari ordini e gradi di scuola, sono
stati quelli che mi insegnavano, con semplicità (ed era il loro grande
merito), a ragionare sulle cose, non quelli che mi insegnavano le cose.
Anch'io riassumo:
I tempi della scuola sono i più importanti nella vita di un individuo
(peccato che, spesso, lo si comprenda, se lo si comprende, solo dopo, quando
la scuola è finita) e dovrebbero avere il solo scopo di formare e
indirizzare, non di informare e indicare.

 no. perche', non e' graziosa ? :)
E' la sopresa... che mi preoccupa!
Una sorpresa su 5 sarà dentro di noi! :P

 di C... Voglio dire, basi per basi, almeno mi danno quelle giuste!
Sì, ma, come si dice, si fa quel che si può. Gli insegnanti (che vengono
regolarmente aggiornati su cose vecchie, ed è tutto dire) quello sanno e,
tanta-manna...!
Io sono perito in telecomunicazioni. A scuola (oltretutto ritenuta a quel
tempo una delle migliori) e a Milano (fatto per niente marginale) mi si
insegnava il funzionamento delle valvole, quando le stesse erano ormai solo
in qualche vecchia radio in qualche vecchia casa. Mai parlato di
transistors, che pure stavano nella vetrina del più scassato negozio o alla
mitica GBC (no, non il nostro GbC|) per la componentistica. Mi si parlava di
telefonia con i selettori meccanici che, intanto che ne parlavi, si
incastravano, eppure esistevano già le centrali elettroniche. Vero, mi si è
parlato anche di guide d'onda, che però, nella pratica non si incontrano,
nemmeno oggi, per strada.
Ma non mi mancano quelle nozioni non dette, mi importa invece dei concetti
che mi sono stati trasmessi e quelli, ora come allora e al di là
dell'applicazione e della tecnologia, sono immutati o, comunque, ancora
assolutamente validi.
Poi, come anche tu dici, l'esperienza, la necessità, "la vita" ci
"costringono" a usare, con quei concetti o similari, strumenti e nuove
tecnologie, ma, lo vedi, ... stiamo ancora scrivendo. ;-)

 Non ho mai pensato questo
btw l'ANSI sql di riferimento adesso dovrebbe essere quello del 99! :P

 italiana inutile, tanto lo so da me.
La scuola pubblica italiana per quanto bistrattata è una delle migliori al
mondo. Qui da noi formi elasticità mentale (quell'elasticità che permette ad
un laureato in lettere di partecipare attivamente a questo NG ad esempio)
non specifco nozionismo tecnico: questo permette all'italica gente di
adattarsi all'esigenza del momento... a cambiare totalmente campo d'impiego
senza troppi traumi... insomma la nota arte dell'arrangiarsi dell'italica
gente dipende _anche_ dalla scuola! E poca importanza ha sei hai studiato
access piuttosto che mysql... è il metodo che conta... la sintassi cambierà
sempre ma il metodo (a meno di rivoluzioni copernicane) mai.
Purtroppo di queste cose te ne accorgi spesso è volentieri quando ormai è
tardi! ;-)

 no, persino lui accetta lo standard sql... (è tutto dire!)
DELETE FROM Tabella... non mi risulta! ;-)

 esistevano già le centrali elettroniche.
non farmi fare i calcoli per capire a quali anni ti riferisci ;-)
sappi comunque che ho lavorato sui selettori elettromeccanici della
telefonia fino al 1995, e che questi sono stati completamente abbandonati
solo qualche anno più tardi.
non si incastravano, o comunque si incastravano molte meno volte di quanto
il mio pc si pianti ;-)
--
Salutoni da un
Sergio che amava molto il siemens smn2

 pascal un linguaggio ideale per imparare le basi della programmazione.
Vero. C'è un solo piccolo, insignificante, problema: quando io ho iniziato
il Pascal al 3° anno le basi di programmazione le avevo già! Già programmavo
in Basic e stavo giusto allora mettendo mani al VB... Cioè: io (e come me
altri) le basi già le avevo... Ancora basi???
Antonio Mirarchi

 sempre ma il metodo (a meno di rivoluzioni copernicane) mai.
Su questo sono d'accordo
Antonio Mirarchi

 Cioè: io (e come me altri) le basi già le avevo... Ancora basi???
Certo a scuola in generale sempre e solo basi... la pratica si fa solo
lavorando! La scuola della vita! ;)

 Tu sei laureato in lettere?
io si'. 110 e lode. davvero ( non era difficile :) .

> Di questo mi devo fidare sulla parola...
SI, infatti. Certo... Se vogliamo pensare che siamo tutti imbroglioni...
Facciamo pure, eh... :-(
Antonio Mirarchi

> io si'. 110 e lode. davvero ( non era difficile :) .
Confesso che un pò ti invidio... Non tanto per il voto, quanto per la
laurea... Però non diciamolo in giro ;-)
Antonio Mirarchi

 in Basic e stavo giusto allora mettendo mani al VB... Cioè:
cioe' *non* avevi le basi. basic lo conosco poco. ma vb ti fa scrivere i
programmi, *non* avere le basi della programmazione. io le basi me le sono
fatte in cobol, oltre che in latino. ringrazia il tuo tp se i programmi
girano...
j.

 laurea... Però non diciamolo in giro ;-)
la laurea e' un pezzo di carta che ti chiedono a volte, ma che non serve a
una sega.
serve la testa che ti sei fatto mentre ci arrivavi. alcune delle persone a
me piu' care, e in qualche caso piu' sveglie, non so neanche se hanno il
diploma. io "dott" se solo posso non lo metto. quando mi chiamano per
cognome, pero', lo pretendo.
btw io la testa me la sono fatta in quegli anni ascoltando west coast e pop:
latino lo sapevo gia', e mi sono imparato l'inglese :)
ciao, j.

 e pop...
e strafacendomi di canne ;-)
--
Salutoni
Sergio

 quanto il mio pc si pianti ;-)
Forzatura la mia, come la tua. Un tantinello vere entrambe.

 merda fino al collo!
Quando fai un colloquio io non ti chiedo con quanto hai passato gli esami
(tanto lo so che se sono voti alti me lo dirai direttamente tu :P)... ti
faccio un po' di domande sulle tue conoscienze tecniche... sulle tue
eventuali esperienze passate, e altre domande più generali... da come parli,
ti muovi, dallo sguardo, capisco già che tipo di persona sei (non sempre ma
nel 90% dei casi si)... due o tre mesi di prova poi bastano per capire se
sei adatto al lavoro o meno. I voti son solo numeri... servono solo se
desideri scaldare la comoda sedia di qualche ente pubblico (non tutti i
dipendenti pubblici scaldano le loro sedie... ci sono alcuni che lavorano
per tutti gli altri che si grattano altrimenti il sistema Italia sarebbe
completamente bloccato)! ;-)

 imbroglioni... Facciamo pure, eh... :-(
Hai frainteso... intendevo dire, forse presuntuosamente, che sei ancora
troppo giovane per saper quali sono le "basi della programmazione" almeno
per come le intendo io. Nulla di più. (personalmente ritengo che a me
manchino parecchie 2basi della programmazione", alle quali sopperisco con la
sperimentazione, e l'italica arte di arrangiarsi).

Tu sei laureato in lettere?
No... non sono laureato e lo fossi sicuramente non in lettere (per una
questione di inclinazione)... non ne ho avuto, diciamo la possibilità...
principalmente per colpa mia! O:-)

 girano...
Allora c'è ancora una volta un problema di termini... Specifica cosa intendi
tu per "basi". Per quanto mi riguarda la base della programmazione è la
logica quindi la capacità di risolvere problemi facendo uso degli strumenti
a tua disposizione... Per cui c'è da distinguere una base "teorica" (la
logica, appunto... Tutte quelle belle cosette di algebra booleana, per
esempio. Ma non solo), e una pratica (che può essere un linguaggio di
programmazione).
Antonio Mirarchi

 Quando fai un colloquio io non ti chiedo con quanto hai passato gli esami
[cut]
Questa invece è un'ottima notizia!
Antonio Mirarchi

 E' la sopresa... che mi preoccupa!
Idem...   :(
ciao
ugo

> No... non sono laureato e lo fossi sicuramente non in lettere
Non dicevo a te... Si è fatto un pò di confusione con tutti questi post :-)
Antonio Mirarchi

 e strafacendomi di canne ;-)
zero. provata una, non mi piaceva. poi basta.
ti prevengo: neanche acidi, ero, coca non cola, ecc ecc.
non mi incuriosisce proprio l'ambito.
chissa', forse ci sono caduto da piccolo come obelix :P
ciao, a.

 tu per "basi".
per esempio la tipizzazione.
in genere, la formalizzazione.
e' l'aspetto in cui vb e' carente.


 offesa, ovviamente.
nessuna offesa, ma parla per te. uno dei problemi maggiori nell'analisi e'
passare dal "tu" al "voi" improvvisamente. non e' un gran segno... di solito
si parla di paranoia (non per modo di dire: in senso tecnico).
voi chi ? lord, io, lupo ?
se pensi che io sia rassegnato, non sei ancora giovane. sei solo stupido.
e per quel che ho visto, anche se lo pensi degli altri.
se intendevi altro, impara a usare le parole.
j.

 Idem...   :(
non vedo il problema. mica ho detto che ci vado a letto. non e' il mio
genere, sotto molti aspetti, inclusi quelli che diceva lord ieri. e
graziosa, eva e' molto graziosa. anche aggraziata, il che di questi tempi e'
raro :P
ciao, a.

  impara a usare le parole.
Questo č sicuramente un campo in cui ho molto da imparare
Antonio Mirarchi

 fai parte dei 20 in questione.
Bah... ne uccide più la penna che la spada...

 Bah... ne uccide più la penna che la spada...
Senza dubbio... Ma cosa mi suggerisci? Un bel saggio anti-occupazione??
Antonio Mirarchi

 Questo č sicuramente un campo in cui ho molto da imparare
appunto. le parole *sono* il pensiero.
poi basta, plz.
j.

 appunto. le parole *sono* il pensiero.
Le parole sono l'espressione del pensiro, non il pensiero stesso. I pensieri
sono solo una serie di impulsi elettrici nel nostro cervello. Esperimere
male un pensiero non vuol dire pensare male... Ma questo forse è un concetto
troppo <<scemo>> per te, vero?
Guarda, io veramente non capisco per quale ragione te la sei presa in questo
modo né capisco la ragione di accendere un conflitto solo per qualche
parolina che volevo scambiare con te e con gli altri. Per quanto mi riguarda
questa vicenda è finita qui... Se poi vuoi fare l'offeso a vita, scrivi pure
tutti i post che vuoi. Ricordando però che tu hai la libertà di
parlare/scrivere quanto ti pare solo che io non ho l'obbligo di
ascoltarti/leggerti.
Comunque questa storia mi è piaciuta pochissimo, veramente. Un'ostilità
simile proprio non me l'aspettavo da parte di nessuno.
Antonio Mirarchi

 simile proprio non me l'aspettavo da parte di nessuno.
gia'. saranno tutti cattivi.
plonk

 gia'. saranno tutti cattivi.
No. Non tutti. Solo tu.

> Non č cattivo... solo che l'hai preso di petto! :(
Uffa... Sto topic proprio non finisce piů. Comunque sia, č normale per me
prendere di petto cose e persone... Mai stato diplomatico, né
tollerante...Insomma ci siamo beccati proprio bene. Questo conflitto non č
mai stato voluto da parte mia... Le cose sono precipitate per una serie di
frasi poco azzecate da una parte e dall'altra.
Antonio Mirarchi