118 messaggi dal 12 marzo 2001
Dunque... il mio problema è questo:

Devo eseguire l'update di 2 tabelle diverse all'interno di un database in formato mdb. Il punto è che per farlo devo prima sapere i valori che c'erano prima, e solo dopo posso aggiornare.

Mi spiego meglio:

Queste due tabelle hanno la stessa parola chiave (Name), ed entrambe contengono un contatore. L'una contiene il contatore totale e l'altra il solo contatore per anno.

Quando eseguo l'update, io sono già posizionato sulla prima tabella che si chiama <b>Generale</b>, e per fare l'update del contatore non faccio altro che fare:
<code> Update Generale Set Totale = '" & Stringa("Totale") + 1 & "' </code>

Adesso, dato che devo fare lo stesso per l'altra tabella, anzichè riposizionarmi, facendo cercare all'oggetto Stringa la posizione giusta sull'altra tabella (e quindi ripetere nuovamente Set Stringa = Connessione(Select...blablabla)), c'è il modo per ottenere il valore precedente del campo nel quale sto eseguendo l'update, in modo da evitare una query quasi inutile, dato che serve solamente ad ottenere il valore precedente del contatore totale?

Spero di essermi spiegato (bè.. non credo, ma io ci provo ;))

Grazie anticipatamente!

--
Claudio a.k.a. Xelloss
My old Homepage: www.2web.it/claudio
My new Homepage: www.kynes.it/claudio

Modificato - Xelloss - 26 Mar 2002 17:10:14
118 messaggi dal 12 marzo 2001
*bonk*



Ehm ehm, dunque... la domanda si può riassumere molto più semplicemente così:

Quando eseguo un'istruzione di UPDATE nel mio database, c'è il modo di avere il valore precedente di un campo numerico, così da potervi addizionare un numero?

Esempio:
ho la tabella "Clikkatemi", e in questa tabella ci sono due colonne:

NomeClick e ClickTotali

Adesso, voglio eseguire eseguire l'update su questa tabella incrementando ClickTotali.

C'è un modo diretto per aggiungere un numero a ClickTotali? Io, per quello che so ora, faccio così (e spero che ci sia un modo più rapido):

<code>
Set Posizione = objConn.Execute("Select * from Clikkatemi where NomeClick = '" & Click & "')"

objConn.Execute ("UPDATE Clikkatemi SET ClickTotali = '" & Posizione("ClickTotali") + 1 & "' WHERE NomeClick = '" & Click & "')"
</code>

Come si può vedere, insomma, non sono andato ad aggiungere direttamente 1, ma ho prima prelevato il numero di click totali e poi addizionato 1.

Vorrei cercare di evitarlo, anche perchè questo posizionarsi sul record da updatare lo dovrei ripetere per tante tabelle (4-5), e ovviamente il database rallenterebbe la sua esecuzione...

Grazie anticipatamente bis

--
Claudio a.k.a. Xelloss
My old Homepage: www.2web.it/claudio
My new Homepage: www.kynes.it/claudio
5 messaggi dal 05 aprile 2002
Ti conviene ragionare in modo diverso.

In una tabella dovresti memorizzare solo i dati nudi e crudi, e non i risultati di calcoli (magari fatto su altri campi della stessa tabella).

Ad esempio se vuoi memorizzare quante volte un certo utente ha visitato una pagina, crei una tabella "visite" in cui aggiungi un record per ogni volta visita.
Se dopo ti interessa sapere quante visite ha fatto tizio, fai una query

SELECT COUNT(*) FROM visite WHERE utente = "tizio"

Questo ti dà la possibilità di gestire + facilmente eventuali modifiche (ad esempio se vuoi memorizzare l'IP ti basta aggiungere una colonna alla tabella).

Detto questo, dovrevùbbe essere possibile effettuare anche una query del genere:

UPDATE tabella SET campo = campo + valore

Almeno MySQL mi consente di farlo...

prova!

:-)

Bye


---
the fly on the net
118 messaggi dal 12 marzo 2001
Ti assicuro che come l'ho ideato invece mi trovo molto meglio e con pochissime righe nelle tabelle :)

--
Claudio a.k.a. Xelloss
My old Homepage: www.2web.it/claudio
My new Homepage: www.kynes.it/claudio

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.