Newsgroup: it.comp.appl.access
Titolo: query eliminazione parametro campo maschera

buongiorno,
mi trovo in difficolta'
 
ho una query di eliminazione che cancella tutti i dati di una tabella
ho un pulsante in una maschera che esegue questa query
vorrei eliminare solo i campi della tabella dove
il campo x della tabella dei dati da cancellare sono uguali al campo y che ho nella maschera
 
come posso fare?
 
grazie a tutti
 


Usare una Query Parametrica...?
Oppure scrivi una Query che pesca il valore della WHERE dalla Form... questa è meno flessibile ma funziona...
 
DELETE * FROM TuaTabella
   WHERE CampoX=Forms("NomeForm")!NomeControllo
 
Se la Form è aperta esegui la Query normalmente.
 
Se invece vuoi usare una Query Parametrica:
 
PARAMETERS InserisciData DateTime;
DELETE *FROM TuaTabella 
   WHERE Dt1=[InserisciData]; 
 
Ovviamente poi la devi chiamare da VBA per valorizzare il Parameter ed eseguire:
Dim qdf As QueryDef
Set qdf=DbEngine(0)(0).QueryDefs("NomeTuaQry")
qdf.Parameters![InserisciData] = TuaData
qdf.Execute
 
In questo caso hai la possibilità di leggere la proprietà [RecordsAffected] esposta dall'oggetto QueryDef [qdf] e sapere quanti Records hai eliminato...
 
@Alex

> @Alex
 
GRAZIE ALEX,
nel frattempo ho optato una soluzione piu' spartana ma valutero' nel week end il tuo consiglio,
 
questo e' il codice con cui ho risolto
travasato = Int((Me![TRASP].Value))
righe = "DELETE * FROM RETTA_TRAVASO_RIGA WHERE MESANN = " & travasato
 
 
ho un problema ora con un sql insert, con il passaggio della variabile:
la variabile e' un long  semplicemente prende il valore di mese e anno: settembre 2018 e' per lui 92018
 
questo il codice
 
Dim travasato As Long
 
travasato = Int((Me![TRASP].Value))
 
Dim strSQL As String
 
strSQL = strSQL & "INSERT INTO RETTA_TRAVASO_TESTATA ( EDUCATRICE, ID, MESANN, PrimoDiCOGNOME_NOME, PrimoDiINDIRIZZO, PrimoDiCAP_E_CITTA, PrimoDiPIVA, PrimoDiCOGNOME, PrimoDiNOME, PrimoDiIND_BAMB, PrimoDiCAP, PrimoDiCITTA, PrimoDiPROVINCIA, PrimoDiCF_BAMBINO, PrimoDiMESANDESC1, ACCONTO, ABBATTIMENTO, SCONTO_SECONDO, ANNO, MESE ) "
 
strSQL = strSQL & "SELECT QUERY.EDUCATRICE_RIFERIMENTO, 
QUERY.ID
, QUERY.MESANN, QUERY.PrimoDiCOGNOME_NOME, QUERY.PrimoDiINDIRIZZO, QUERY.PrimoDiCAP_E_CITTA, QUERY.PrimoDiPIVA, QUERY.PrimoDiCOGNOME, QUERY.PrimoDiNOME, QUERY.PrimoDiIND_BAMB, QUERY.PrimoDiCAP, QUERY.PrimoDiCITTA, QUERY.PrimoDiPROVINCIA, "
 
strSQL = strSQL & "QUERY.PrimoDiCF_BAMBINO, QUERY.PrimoDiMESANDESC1, QUERY.PrimoDiPrimoDiPrimoDiACCONTO, QUERY.PrimoDiABBATTI, QUERY.PrimoDiPrimoDiSCONTO_SU_RETTA_ES_SECONDO_BAMBIN, QUERY.PrimoDiPrimoDiANNO, QUERY.PrimoDiPrimoDiMESE "
 
strSQL = strSQL & "FROM QUERY "
 
strSQL = strSQL & "WHERE (((QUERY.MESANN) = travasato));"
 
DoCmd.RunSQL strSQL
Me.Requery
 
non riesco a fargli digerire la variabile long e ricevo come errore access non riconosce travasato come espressione o nome di campo valido
 
ho provato a trasformarla in stringa gestendo la variabile come una stringa appunto ma ottengo un errore discrepanza sui dati
 
grazie in anticipo
 

Ti riporto quello che secondo me è l'anomalia o Errore di sintassi nella composizione stringa:
 
strSQL = strSQL & "WHERE (((QUERY.MESANN) = travasato));" 
 
La Variabile [travasato] così non viene risolta, devi modificare così:
 
 
strSQL = strSQL & "WHERE (((QUERY.MESANN) = " & travasato & "));" 
 
@Alex


grazie Alex
 
 
cosi' modificando ricevo un errore run time 3464 
 
tipo di dati non corrispondenti nell'espressione criterio
 

 tipo di dati non corrispondenti nell'espressione criterio
 
Devi sapere quello che vai facendo... il Campo di che tipo è...?
COsì come impostato ho immaginato fosse numerico, se non lo fosse, oltre che darci indicazioni tecniche precise, devi modificare la sintassi che cambia a seconda del Type.
 
@Alex


ARRGH
il campo della tabella era numerico, il campo della query che mi serviva per i dati che vado ad accodare nella tabella concatenava una stringa, quello l'inghippo,
grazie Alex!