PDA

Visualizza la versione completa : Microsoft Access: Query di aggiornamento senza parametri


Elena78
30-06-2003, 17:15
Ho due tabella PIPPO e PAPERINO

PIPPO ha i seguenti campi: uno, due, tre, quattro solo i campi uno e due sono valorizzati

PAPERINO ha i seguenti campi : uno, due, tre, quattro tutti i campi sono valorizzati e i campi uno e due contengono gli stessi dati della tabella PIPPO.

Io devo valorizzare i campi tre e quattro della tabella PIPPO mettendo dentro i valori contenuti nella tabella PAPERINO.


Per cui con access ho creato le due tabelle (di una ho effettuato il collegamento ).
E ho creato una query manuale con questa istruzione:


UPDATE PIPPO INNER JOIN PAPERINO ON PIPPO.uno = TPAPERINO.uno SET PIPPO.due = PAPERINO.due, PIPPO.tre = PAPERINO.tre, PIPPO.quattro = PAPERINO.quattro
WHERE (((PIPPO.uno)=[PAPERINO].[uno]) AND ((PIPPO.due)=[PAPERINO].[due]));

Quando però effetto l'esecuzione della query mi viene fuori la pop-up : Immissione parametro.

Cosa sbaglio??? :confused:

Grazie a tutti!! :)

darkblOOd
30-06-2003, 17:55
mi sa che non si possono usare le joint con l'update..cmq così dovrebbe andare:


update tab1
set tab1.campo3 = tab2.campo3, tab1.campo4=tab2.campo4
from tab2
where tab1.campo1=tab2.campo2 and tab1.campo2=tab2.campo2


:ciauz:

Elena78
30-06-2003, 18:03
Originariamente inviato da darkblOOd
mi sa che non si possono usare le joint con l'update..cmq così dovrebbe andare:


update tab1
set tab1.campo3 = tab2.campo3, tab1.campo4=tab2.campo4
from tab2
where tab1.campo1=tab2.campo2 and tab1.campo2=tab2.campo2


:ciauz:

l'inner join me l'ha creata lui in automatico :master:

laccamen
30-06-2003, 18:05
Originariamente inviato da Elena78
Ho due tabella PIPPO e PAPERINO

PIPPO ha i seguenti campi: uno, due, tre, quattro solo i campi uno e due sono valorizzati

PAPERINO ha i seguenti campi : uno, due, tre, quattro tutti i campi sono valorizzati e i campi uno e due contengono gli stessi dati della tabella PIPPO.

Io devo valorizzare i campi tre e quattro della tabella PIPPO mettendo dentro i valori contenuti nella tabella PAPERINO.


Per cui con access ho creato le due tabelle (di una ho effettuato il collegamento ).
E ho creato una query manuale con questa istruzione:


UPDATE PIPPO INNER JOIN PAPERINO ON PIPPO.uno = TPAPERINO.uno SET PIPPO.due = PAPERINO.due, PIPPO.tre = PAPERINO.tre, PIPPO.quattro = PAPERINO.quattro
WHERE (((PIPPO.uno)=[PAPERINO].[uno]) AND ((PIPPO.due)=[PAPERINO].[due]));

Quando però effetto l'esecuzione della query mi viene fuori la pop-up : Immissione parametro.

Cosa sbaglio??? :confused:

Grazie a tutti!! :)


quando viene fuori il pop up del parametro vuol dire che un campo è errato... controlla bene tutti i campi se sonon giusti.

darkblOOd
30-06-2003, 18:14
Originariamente inviato da Elena78
l'inner join me l'ha creata lui in automatico :master:

:bhò:
io ho provato in quel modo e funziona

a volte le autogenerazioni creano problemi, personalmente non le uso mai :stordita:

e poi manca la SET

Elena78
30-06-2003, 18:26
Originariamente inviato da laccamen
quando viene fuori il pop up del parametro vuol dire che un campo è errato... controlla bene tutti i campi se sonon giusti.

I campi sono corretti perchè li ho selezionati dalla struttura della query.. non li ho digitati.. :(

@ Dark: UPDATE PIPPO INNER JOIN PAPERINO ON PIPPO.uno = TPAPERINO.uno SET PIPPO.due = PAPERINO.due, PIPPO.tre = PAPERINO.tre, PIPPO.quattro

darkblOOd
30-06-2003, 18:44
non l'aevo visto, scusa :fagiano:

cmq prova a commentare il codice che ti ha generato lui e metti questo


update PIPPO
set PIPPO.tre = PAPERINO.tre, PIPPO.quattro=PAPERINO.quattro
from PAPERINO
where PIPPO.uno=PAPERINO.uno and PIPPO.uno=PAPERINO.uno


se funziona che ti frega della join? se propio la devi mettere adesso vedo la documentazione cmq penso che in ogni caso dovrebbe andare DOPO la set e non prima

stando a quanto dice la documentazione:


UPDATE
Modifica i dati esistenti in una tabella.

Sintassi
UPDATE
{
table_name WITH ( < table_hint_limited > [ ...n ] )
| view_name
| rowset_function_limited
}
SET
{ column_name = { expression | DEFAULT | NULL }
| @variable = expression
| @variable = column = expression } [ ,...n ]

{ { [ FROM { < table_source > } [ ,...n ] ]

[ WHERE
<search_condition> ] }
|
[ WHERE CURRENT OF
{ { [ GLOBAL ] cursor_name } | cursor_variable_name }
] }
[ OPTION ( < query_hint > [ ,...n ] ) ]

< table_source > ::=
table_name [ [ AS ] table_alias ] [ WITH ( < table_hint > [ ,...n ] ) ]
| view_name [ [ AS ] table_alias ]
| rowset_function [ [ AS ] table_alias ]
| derived_table [ AS ] table_alias [ ( column_alias [ ,...n ] ) ]
| < joined_table >

< joined_table > ::=
< table_source > < join_type > < table_source > ON < search_condition >
| < table_source > CROSS JOIN < table_source >
| < joined_table >

< join_type > ::=
[ INNER | { { LEFT | RIGHT | FULL } [OUTER] } ]
[ < join_hint > ]
JOIN

< table_hint_limited > ::=
{ FASTFIRSTROW
| HOLDLOCK
| PAGLOCK
| READCOMMITTED
| REPEATABLEREAD
| ROWLOCK
| SERIALIZABLE
| TABLOCK
| TABLOCKX
| UPDLOCK
}

< table_hint > ::=
{ INDEX ( index_val [ ,...n ] )
FASTFIRSTROW
| HOLDLOCK
| NOLOCK
| PAGLOCK
| READCOMMITTED
| READPAST
| READUNCOMMITTED
| REPEATABLEREAD
| ROWLOCK
| SERIALIZABLE
| TABLOCK
| TABLOCKX
| UPDLOCK
}

< query_hint > ::=
{ { HASH | ORDER } GROUP
| { CONCAT | HASH | MERGE } UNION
| { LOOP | MERGE | HASH } JOIN
| FAST number_rows
| FORCE ORDER
| MAXDOP
| ROBUST PLAN
| KEEP PLAN
}

laccamen
30-06-2003, 18:52
Originariamente inviato da Elena78
I campi sono corretti perchè li ho selezionati dalla struttura della query.. non li ho digitati.. :(

@ Dark: UPDATE PIPPO INNER JOIN PAPERINO ON PIPPO.uno = TPAPERINO.uno SET PIPPO.due = PAPERINO.due, PIPPO.tre = PAPERINO.tre, PIPPO.quattro


non so se ti è già riuscito comunque a me cosi funziona ;)


UPDATE paperino INNER JOIN pippo ON (paperino.campo2 = pippo.campo2) AND (paperino.Campo1 = pippo.Campo1) SET pippo.campo3 = [paperino].[campo3], pippo.campo4 = [paperino].[campo4];

Loading