Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.Net] INSERT o UPDATE
Forum - C# / VB.NET - [VB.Net] INSERT o UPDATE

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
sps84 (Normal User)
Expert


Messaggi: 202
Iscritto: 11/02/2009

Segnala al moderatore
Postato alle 14:33
Sabato, 29/08/2009
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

http://blogs.msdn.com/miah/archive/2008/02/17/sql-if-exist ...

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à);"

PM Quote
Avatar
BugliL (Member)
Pro


Messaggi: 135
Iscritto: 09/08/2009

Segnala al moderatore
Postato alle 18:33
Sabato, 29/08/2009
Testo quotato

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:

PM Quote
Avatar
sps84 (Normal User)
Expert


Messaggi: 202
Iscritto: 11/02/2009

Segnala al moderatore
Postato alle 11:50
Domenica, 30/08/2009
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:

PM Quote
Avatar
BugliL (Member)
Pro


Messaggi: 135
Iscritto: 09/08/2009

Segnala al moderatore
Postato alle 18:32
Domenica, 30/08/2009
Se il codice é che scritto come lo hai postato (visualizzazzione a parte) quando viene concatenata la stringa diventa:
Codice sorgente - presumibilmente C# / VB.NET

  1. "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 il 30/08/2009 alle 18:35
PM Quote
Avatar
sps84 (Normal User)
Expert


Messaggi: 202
Iscritto: 11/02/2009

Segnala al moderatore
Postato alle 19:30
Lunedì, 31/08/2009
continua a darmi questo errore

http://www.sps84.net/images/erroresql.jpg

Ultima modifica effettuata da sps84 il 31/08/2009 alle 19:30
PM Quote
Avatar
sps84 (Normal User)
Expert


Messaggi: 202
Iscritto: 11/02/2009

Segnala al moderatore
Postato alle 19:33
Lunedì, 31/08/2009
non esiste un metodo diverso?

PM Quote
Avatar
BugliL (Member)
Pro


Messaggi: 135
Iscritto: 09/08/2009

Segnala al moderatore
Postato alle 0:22
Martedì, 01/09/2009
Testo quotato

Postato originariamente da sps84:

non esiste un metodo diverso?



Ovviamente sì

Codice sorgente - presumibilmente Delphi

  1. ....Dim Rs as ADODB.Recordset
  2. ....Dim Rs2 as ADODB.Recordset
  3. ....Dim Conn as ADODB.Connection
  4.  
  5. ....Conn.Open(strConn) ' <- La stringa per il DB di access la cerchi su google....
  6. ....RS.Open("SELECT * FROM DettOrdini WHERE IDArticolo=" & Codice,Conn)
  7. ....If not RS.EOF then
  8. ........Q = "UPDATE DettOrdini SET IDArticolo = @Codice, Quantità = @LblQuantità WHERE IDArticolo = " & Codice
  9. ....else
  10. ........Q = "INSERT INTO DettOrdini (IDArticolo, Quantità) VALUES(" & Codice & ", " & LblQuantità & ")"
  11. ....end if
  12. ....Conn.Execute(Q)
  13. ....Rs.Close
  14. ....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.

PM Quote
Avatar
sps84 (Normal User)
Expert


Messaggi: 202
Iscritto: 11/02/2009

Segnala al moderatore
Postato alle 23:41
Martedì, 01/09/2009
adesso provo subito!:hail:

PM Quote
Avatar
BugliL (Member)
Pro


Messaggi: 135
Iscritto: 09/08/2009

Segnala al moderatore
Postato alle 15:28
Mercoledì, 02/09/2009
Testo quotato

Postato originariamente da sps84:
adesso provo subito!:hail:



Dimmi se poi è andata :k:

PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo