Newsgroup: it.comp.appl.access
Titolo: INSERT che non funziona...AIUTO!!

Ciao a tutti,
ho un problema con un query di accodamento con cui proprio sto perdendo
le speranze.
Mi sono letto un po di roba in giro, e dopo aver appurato che la
sintassi per le INSERT è diversa in quella SQL standard, sono
pervenutoa questa stringa:
sql = "INSERT INTO ARTICOLI ( Cda_Articolo, Cda_Tipo_articolo,
Num_Prezzo, Cda_Fornitore, Cda_Colore )
SELECT ARTICOLI.Cda_Articolo, ARTICOLI.Cda_Tipo_articolo,
ARTICOLI.Num_Prezzo, ARTICOLI.Cda_Fornitore, ARTICOLI.Cda_Colore FROM
ARTICOLI
WHERE (((ARTICOLI.Cda_Articolo)='" & Me.Cda_Articolo.Value & "') AND
((ARTICOLI.Cda_Tipo_articolo)='" & Me.Cda_Tipo_articolo.Value & "') AND
((ARTICOLI.Num_Prezzo)=" & Me.Num_Prezzo.Value & ") AND
((ARTICOLI.Cda_Fornitore)='" & Form_ANAGRAFICA.Cda_Fornitore & "') AND
((ARTICOLI.Cda_Colore)='" & Me.Cda_Colore.Value & "'));"
visto che inizialmente credevo che non mi beccasse i valori giusti
tramite msgbox ho ottenuto la stringa valorizzata:
INSERT INTO ARTICOLI ( Cda_Articolo, Cda_Tipo_articolo, Num_Prezzo,
Cda_Fornitore, Cda_Colore )
SELECT ARTICOLI.Cda_Articolo, ARTICOLI.Cda_Tipo_articolo,
ARTICOLI.Num_Prezzo, ARTICOLI.Cda_Fornitore, ARTICOLI.Cda_Colore FROM
ARTICOLI
WHERE (((ARTICOLI.Cda_Articolo)='34de') AND
((ARTICOLI.Cda_Tipo_articolo)='EL') AND ((ARTICOLI.Num_Prezzo)=33) AND
((ARTICOLI.Cda_Fornitore)='dd') AND ((ARTICOLI.Cda_Colore)='33de'));
che è quanto mi aspettavo uscisse fuori.
Allora me la sono andata a creare in visualizzazione struttura, ma
andando ad eseguirla non riesco ancora ad avere un risultato.
Anche andandola a visualizzare da "foglio dati", il risultato non
cambia... niente!!
Con mio grande disappunto ho però scoperto che se da "foglio dati"
della query vado ad inserire valori, questi mi vengono salvati nella
tabella.
Non so che pesci prendere... avete qualche suggerimento?
Grazie anticipatamente
Marco

 cambia... niente!!
Scusa, ma intendi dire che nessun record viene inserito nella tabella?
Hai controllato direttamente nella tabella?
Oppure intendi dire che nella visualizzazione "foglio dati" della query di 
inserimento non vedi alcun record?
In questo caso è normale che tu non veda niente.
--
PBsoft di Gabriele Bertolucci
www.pbsoft.it
skype: pbsoftsolution

PBsoft ha scritto:

Ciao,
intendo che dopo aver eseguito la query sia da codice che da generatore
query di access, nella tabella non viene inserito alcun record.
Se, invece, creo la query in visualizzazione struttura e/o SQL, passo
al foglio dati della query stessa, non mi visualizza i dati che
dovrebbero essere aggiunti; al contrario, se, una volta che sono in
"visualizzazione foglio dati" inserisco dei dati ed eseguo la query, il
record nella tadella viene aggiunto.
Grazie
Marco

 il record nella tadella viene aggiunto.
Domanda: non è che per caso stai anche cercando di valorizzare la chiave 
primaria e questa è un campo di tipo contatore?


PBsoft ha scritto:

Ciao!
Non so come ma ho risolto...
Cioè... ho cambiato la query... ma ieri sera neanche quella che ho
messo ora funzionava...
Boh... meglio così...
Grazie mille comunque per l'interessamento!!
Ciao 
Marco

 messo ora funzionava...
Credo che sarebbe carino, a questo punto, che tu postassi la soluzione al 
tuo problema: potrebbe rivelarsi utile per altre persone e contribuirebbe 
alla crescita della community.


PBsoft ha scritto:

Ciao! Leggo solo ora la tua risposta... beh non mi reputo certo tale da
poter dar consigli, tanto meno in questo campo, ma se qualcuno potesse
trovare giovamento da queste righe ne sarei onorato...
Posto l'intera funzione in cui avevo inserito la INSERT che mi dava
noia...
Mo che ci sono ecco due righe per spiegarne il funzionamento... voi
guru avrete sicuramente soluzioni migliori, per cui non esitate a
correggere!!!
Quanto segue è una funzione che fa un insert ottenento i valori da una
maschera, visto che la maschera può essere aperta in "add", "mod" o
"del", ho creato una variabile globale che mi dice la modalità con cui
è aperta la maschera.
Ho creato la variabile TABLE, perchè spero di poterla reciclare più
avanti nel progetto, passando questo valore dall'esterno.
I primi due if sono due controlli per vedere se i campo
Cda_Tipo_articolo e Cda_Articolo, che sono le chiavi, sono nulli.
Gli if successivi verificano se gli altri controlli nella maschera sono
valorizzati o meno: se si inserisce il valore del controllo nell'INSERT
altrimenti no.
L'ultima riga esegue l'INSERT memorizzata nella variabile "sql"
Public Function Salva_add()
Dim Cda_Colore As String, Num_Prezzo As Integer
Dim tbl As String
    tbl = "ARTICOLI"
        If IsNull(Form_ARTICOLI.Cda_Tipo_articolo.Value) Or
(Form_ARTICOLI.Cda_Tipo_articolo.Value = "") Then
            MsgBox ("Occorre specificare il Tipo Articolo!")
            Exit Function
        End If
If IsNull(Form_ARTICOLI.Cda_Articolo.Value) Or
(Form_ARTICOLI.Cda_Articolo.Value = "") Then
    MsgBox ("Occorre specificare il Codice Articolo!")
    Exit Function
End If
If IsNull(Form_ARTICOLI.Cda_Colore.Value) Or
(Form_ARTICOLI.Cda_Colore.Value = "") Then
    If IsNull(Form_ARTICOLI.Num_Prezzo.Value) Then
        sql = "INSERT INTO " & tbl & " (Cda_Tipo_Articolo,
Cda_Articolo, Cda_Fornitore) VALUES ('" &
Form_ARTICOLI.Cda_Tipo_articolo.Value & "' , '" &
Form_ARTICOLI.Cda_Articolo.Value & "' , '" &
Form_ANAGRAFICA.Cda_Fornitore & "');"
    Else
        sql = "INSERT INTO " & tbl & " (Cda_Tipo_Articolo,
Cda_Articolo, Cda_Fornitore, Num_Prezzo) VALUES ('" &
Form_ARTICOLI.Cda_Tipo_articolo.Value & "' , '" &
Form_ARTICOLI.Cda_Articolo.Value & "' , '" &
Form_ANAGRAFICA.Cda_Fornitore & "' , " & Form_ARTICOLI.Num_Prezzo & "
);"
    End If
Else
    If IsNull(Form_ARTICOLI.Num_Prezzo.Value) Then
        sql = "INSERT INTO " & tbl & " (Cda_Tipo_Articolo,
Cda_Articolo, Cda_Fornitore, Cda_Colore) VALUES ('" &
Form_ARTICOLI.Cda_Tipo_articolo.Value & "' , '" &
Form_ARTICOLI.Cda_Articolo.Value & "' , '" &
Form_ANAGRAFICA.Cda_Fornitore & "' , '" & Form_ARTICOLI.Cda_Colore &
"');"
    Else
        sql = "INSERT INTO " & tbl & " (Cda_Tipo_Articolo,
Cda_Articolo, Cda_Fornitore, Cda_Colore, Num_Prezzo) VALUES ('" &
Form_ARTICOLI.Cda_Tipo_articolo.Value & "' , '" &
Form_ARTICOLI.Cda_Articolo.Value & "' , '" &
Form_ANAGRAFICA.Cda_Fornitore & "' , '" & Form_ARTICOLI.Cda_Colore &
"', " & Form_ARTICOLI.Num_Prezzo & " );"
    End If
End If
DoCmd.RunSQL sql
End Function
Ciao ciao
Marco