Oppure

Loading
29/08/09 12:33
sps84
Sto cercando di realizzare un piccolo catalogo, il problema è questo devo inserire un record se nuovo o aggiornarlo se vecchio in un db Access in giro ho trovato tanti suggerimenti tipo questo

blogs.msdn.com/miah/archive/2008/02/17/…

ma non capisco dove sbaglio :hail:

AccessCommand.CommandText = "IF (EXIST(SELECT * FROM DettOrdini WHERE IDArticolo = @Codice)) " & _
"UPDATE DettOrdini SET IDArticolo = @Codice, Quantità = @LblQuantità WHERE @Codice = IDArticolo" & _
"ELSE" & _
"INSERT INTO DettOrdini (IDArticolo, Quantità;) VALUES(@Codice, @LblQuantità;);"
aaa
29/08/09 16:33
BugliL
Postato originariamente da sps84:
AccessCommand.CommandText = "IF (EXIST(SELECT * FROM DettOrdini WHERE IDArticolo = @Codice)) " & _
"UPDATE DettOrdini SET IDArticolo = @Codice, Quantità = @LblQuantità WHERE @Codice = IDArticolo" & _
"ELSE" & _
"INSERT INTO DettOrdini (IDArticolo, Quantità;) VALUES(@Codice, @LblQuantità;);"


Secondo me sbagli a concatenare le stringhe...
Capita spesso anche a me di tralasciare gli spazi quando scrivo le query su più righe...

Per farti un esempio:
IDArticolo" & _ "ELSE" & _ "INSERT <- Qui manca lo spazio intorno ad ELSE

Dimmi se poi hai risolto :k:
aaa
30/08/09 9:50
sps84
scuami ma è sbagliato com'è scritto o per il fatto che va a capo di qua e di la... se è per l'ultima non ci stava quando l'ho postato..:rofl:
aaa
30/08/09 16:32
BugliL
Se il codice é che scritto come lo hai postato (visualizzazzione a parte) quando viene concatenata la stringa diventa:
"UPDATE DettOrdini SET IDArticolo = @Codice, Quantità = @LblQuantità WHERE @Codice = IDArticoloELSEINSERT INTO DettOrdini (IDArticolo, Quantità) VALUES(@Codice, @LblQuantità);"


Come vedi "IDArticoloELSEINSERT" non può essere interpretato perchè è una stringa sbagliata... :k:

EDIT: Per il codice, quando vuoi indentarlo precedilo con dei puntini 8-), lo visualizzi bene in quel modo...
Ultima modifica effettuata da BugliL 30/08/09 16:35
aaa
31/08/09 17:30
sps84
continua a darmi questo errore

sps84.net/images/…
Ultima modifica effettuata da sps84 31/08/09 17:30
aaa
31/08/09 17:33
sps84
non esiste un metodo diverso?
aaa
31/08/09 22:22
BugliL
Postato originariamente da sps84:

non esiste un metodo diverso?


Ovviamente sì

....Dim Rs as ADODB.Recordset
....Dim Rs2 as ADODB.Recordset
....Dim Conn as ADODB.Connection

....Conn.Open(strConn) ' <- La stringa per il DB di access la cerchi su google....
....RS.Open("SELECT * FROM DettOrdini WHERE IDArticolo=" & Codice,Conn)
....If not RS.EOF then
........Q = "UPDATE DettOrdini SET IDArticolo = @Codice, Quantità = @LblQuantità WHERE IDArticolo = " & Codice
....else
........Q = "INSERT INTO DettOrdini (IDArticolo, Quantità) VALUES(" & Codice & ", " & LblQuantità & ")"
....end if
....Conn.Execute(Q)
....Rs.Close
....Conn.Close


Codice e LblQuantità sono 2 varibili che imposti Tu ovviamente...
Se non usi la libreria ADO cerca di scrivere il codice in modo da fare la stessa cosa...

In pratica... il codice cerca di aprire il record della tabella Ordini che hanno il codice uguale a CODICE
Se il record esiste viene selezionata la query di aggiornamento
Se il record non esiste viene selezionata la query di inserimento.
aaa
01/09/09 21:41
sps84
adesso provo subito!:hail:
aaa