Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Access, query di insert o di update
mercoledì 07 gennaio 2009 - 10.56
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
volperubbia
Profilo
| Senior Member
375
messaggi | Data Invio:
mer 7 gen 2009 - 10:56
Ciao a tutti,
sono abituato ad usare sql server, dove ci sono le stored procedures e molto si può fare al loro interno,
mi chiedo ora come risolvere il seguente problema su Access ...
Ho creato una query di insert con parametri su mdb e fin qui tutto ok.
Ovviamente sulla mia tabella c'è un campo chiave, quindi su quel campo non posso inserire valori duplicati.
E' possibile, all'interno della stessa query, fare un test:
- se il valore non esiste, fai l'insert
- se il valore esiste, non fare nulla (o magari fai l'update)
???
Sarebbe un po' l'uovo di Colombo, ... eviterei così, in alcuni casi, di aggiungere codice di controllo lato vb ...
Qualche idea?
Grazie, Davide
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mer 7 gen 2009 - 11:22
>E' possibile, all'interno della stessa query, fare un test:
>- se il valore non esiste, fai l'insert
>- se il valore esiste, non fare nulla (o magari fai l'update)
>
>???
>
>Sarebbe un po' l'uovo di Colombo, ... eviterei così, in alcuni
>casi, di aggiungere codice di controllo lato vb ...
Ciao Davide,
Temo che dovrai implementare questi controlli lato client visto che gli oggetti Query di Access sono una via di mezzo tra le viste e le inline UDF di SQL Server.
>Grazie, Davide
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
volperubbia
Profilo
| Senior Member
375
messaggi | Data Invio:
mer 7 gen 2009 - 13:33
Ciao Lorenzo, grazie
... per quanto riguarda l'insert con pre-verifica dell'esistenza di un valore,
ho risolto così:
PARAMETERS [@NewValue] Text ( 255 ) ;
INSERT INTO MyTable ( Field )
SELECT DISTINCT [@NewValue] FROM MyTable
WHERE
(SELECT TOP 1 U.Field FROM MyTable U
WHERE UCase(Trim([@NewValue])) = UCase(Trim(U.Field))) IS NULL ;
E' un po' un raggiro, ma sembra funzioni, almeno dalle prove che ho fatto.
Resta da capire poi l'altro problema, cioè il fare l'insert o l'update a seconda
dell'esistenza o meno di un determinato valore, ma qui penso che hai ragione tu ...
Sai mica se (ovviamante per pochi casi dove è ammissibile) è possibile inserire
due istruzioni SQL in una stessa query con parametro?
Eempio:
DELETE * FROM ... ;
INSERT INTO ... ;
Grazie mille, Davide
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mer 7 gen 2009 - 14:27
>Sai mica se (ovviamante per pochi casi dove è ammissibile) è
>possibile inserire
>due istruzioni SQL in una stessa query con parametro?
>
>Eempio:
>DELETE * FROM ... ;
>INSERT INTO ... ;
No, con le Query non è possibile.
>Grazie mille, Davide
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
volperubbia
Profilo
| Senior Member
375
messaggi | Data Invio:
mar 13 gen 2009 - 18:07
Ciao Lorenzo,
c'è un' errore sullo script precedente che avevo mandato ...
PARAMETERS [@NewValue] Text ( 255 ) ;
INSERT INTO MyTable ( Field )
SELECT DISTINCT [@NewValue] FROM MyTable
WHERE
(SELECT TOP 1 U.Field FROM MyTable U
WHERE UCase(Trim([@NewValue])) = UCase(Trim(U.Field))) IS NULL ;
Funziona solo quando MyTable è non vuota.
Per farlo funzionare anche quando MyTable è vuota, ho creato sull'mdb
una tabella NullTable con un campo e un solo record (è una tabella inutile).
Lo script ora diventa:
PARAMETERS [@NewValue] Text ( 255 ) ;
INSERT INTO MyTable ( Field )
SELECT [@NewValue] FROM NullTable
WHERE (SELECT TOP 1 U.Field FROM MyTable U
WHERE UCase(Trim([@NewValue])) = UCase(Trim(U.Field))) IS NULL ;
Davide
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !