Newsgroup: it.comp.appl.access
Titolo: LUNGO Problema con metodo Update

Ciao, oggi ho deciso di usare HyperlinkAddress per allegare i CV degli
utenti.
Ma ho un problema con il metodo Update dell'oggetto RecordSet.
Sulla maschera frmSchedaPrimoContatto c'è un oggetto nascosto
CurriculumLink nel quale vado a mettere l'indirizzo del CV dell'utente
corrente, e questo controllo è associato al campo CurriculumLink della
tabella tblUtenti; ecco il codice:
Private Sub cmdAnteprimaCV_Click()
If Not IsNull(Forms!frmSchedaPrimoContatto!CurriculumLink) Or
(Forms!frmSchedaPrimoContatto!CurriculumLink <> "") Then
    Me.cmdAnteprimaCV.HyperlinkAddress =
Forms!frmSchedaPrimoContatto!CurriculumLink
Else
    MsgBox "Nessun curriculum per l'utente selezionato", vbInformation,
"Anteprima Curriculum"
End If
End Sub
Private Sub cmdAggiungiCV_Click()
Dim rst As DAO.Recordset
Dim strAttach As String
Set rst = CurrentDb.OpenRecordset("tblUtenti")
    strAttach = cmdlg_file("C:\", "All files (*.*)" & Chr(0) & "*.*" &
Chr(0))
    Forms!frmSchedaPrimoContatto!CurriculumLink.Value = strAttach
    rst.Edit
    rst!CurriculumLink = strAttach
    rst.Update
    rst.Close
    Me.Requery
End Sub
Private Sub cmdEliminaCurriculum_Click()
Dim rst As DAO.Recordset
Dim strAttach As String
If Not IsNull(Forms!frmSchedaPrimoContatto!CurriculumLink) Or
(Forms!frmSchedaPrimoContatto!CurriculumLink <> "") Then
    If MsgBox("Sei sicuro di voler eliminare il CV di " &
UCase([Forms]![frmSchedaPrimoContatto]![Nome] & " " &
[Forms]![frmSchedaPrimoContatto]![Cognome]) & " ?", vbQuestion +
vbYesNo, "Eliminazione Curriculum") = vbYes Then
        Set rst = CurrentDb.OpenRecordset("tblUtenti")
        strAttach = ""
        Forms!frmSchedaPrimoContatto!CurriculumLink.Value = strAttach
        rst.Edit
        rst!CurriculumLink = strAttach
        rst.Update
        rst.Close
        Me.Requery
        MsgBox "CV eliminato", vbInformation, "Eliminazione Curriculum"
    End If
Else
    MsgBox "Nessun CV per l'utente corrente", vbInformation,
"Eliminazione Curriculum"
End If
End Sub
I problemi sono:
1. quando Allego il CV mi chiede di salvare il record - solo la prima
volta
2. il codice per eliminare il cv non funziona
Dove sbaglio?
Grazie.

volta
Edit serve solo per intervenire su un record già esistente...se si tratta di 
archiviare un "nuovo" record devi utilizzare il metodo AddNew....
rst.AddNew
 rst!CurriculumLink = strAttach
rst.Update
rst.Close
Me.Requery
A parte il fatto che non capisco che cavolo combini (consentimi 
l'espressione...)-> non ti posizioni da nessuna parte (nè all'inizio nè alla 
fine del recordset) e ti limiti a sovrascrivere il recordset su cui sei 
posizionato -> perchè fai questo? Devi lavorare su 1 solo record?
      >  rst.Edit
      > rst!CurriculumLink = strAttach
      > rst.Update
      >  rst.Close
      >  Me.Requery
        >2. il codice per eliminare il cv non funziona
Ha mai sentito parlare del metodo Delete per eliminare i records? 
rst.Delete....
Dai 1 occhiata alla guida di Salvino...inoltre se gestisci gli errori buona 
parte di essi riusciresti ad individuarli da te!
Prova ad inserire qualche riga di commento...giusto per ricordarti di quello 
che hai scritto ed "esternarlo" agli altri ;-)
Buona domenica :-)
Gaspare

Veramente io non devo aggiungere nè togliere alcun record.
La tabella tblUtenti ha un campo testo 'CurriculumLink' che serve a
memorizzare il percorso del curriculum di ogni singola persona.
Quindi quando io entro nella scheda Primo Contatto, e clicco sul
pulsante AggiungiCV mi si apre la finestra dalla quale io posso
selezionare il CV della persona e allegarglielo.
Come avviene ciò' Semplicemente assegnando al campo testo
CurriculumLink del record specifico il valore di strAttach, che è la
stringa che contiene il percorso del curriculum nella forma
C:\percorso\nome_file.estensione
In questo modo ogni volta posso aprire il CV giusto per ogni singola
persona.
Il problema è che il record corrente, dopo avergli allegato il CV,
viene modificato proprio perchè immetto un valore nel campo
CurriculumLink, ed ecco perchè uso .Edit e .Update per aggiornare il
record corrente senza che ciò venga richiesto all'utente che usa il
database che è una scocciatura.
Ma pare non funzionare. Come non pare funzionare il codice del pulsante
cmdEliminaCurriculum, codice che viene eseguito perchè mi appaiono le
msgbox.
Perciò quello che non funziona è:
1) .Edit e .Update che sono bellamente ignorati visto che comunque
all'utente viene chiesto di salvare il record corrente quando esce da
esso (cambia maschera o si sposta avanti/indietro)
2) Set rst = CurrentDb.OpenRecordset("tblUt­enti")
        strAttach = ""
        Forms!frmSchedaPrimoContatto!C­urriculumLink.Value = strAttach
        rst.Edit
        rst!CurriculumLink = strAttach
        rst.Update
        rst.Close
        Me.Requery
visto che a quanto pare nel campo CurriculumLink della tabella
tblUtenti il percorso continua ad esistere.
Non ho idea di cos' altro io debba fare. :(

[CUT]
Me la spedisci per favore questa parte di db? solo questa...
gasp...@infinito.it
Ciao
Gaspare 

Hey ma sei gaspare? mica ti avevo riconosciuto :) perchè hai cambiato
nick?
E come faccio a spedirti solo questa? A parte che ce l'ho su casa e
pure il db d'esempio.
Cmq ho postato tutto il codice qui.
Ricapitolando: ho questa form dove visualizzo i dati dell'utente
corrente. C'è un controllo nascosto che registra il percorso del CV, e
questo percorso viebe assegnato al campo CurriculumLink della tabella
tblUtenti e ovviamente devo anche salvare il record corrente perchè ho
cambiato il valore di un campo di quel record.
Ma appunto, io lo salvo ma quel messaggio appare lo stesso.
E cmq anche se aggiorno quel campo a "" in realtà il percorso rimane.

[CUT]
Certo che sono gaspare e che sono il titolo di un film?
hai controllato bene che
  strAttach = cmdlg_file("C:\", "All files (*.*)" & Chr(0) & "*.*" &
Chr(0))
ti ritorna il nome del file selezionato?

[CUT]
Cosě va meglio?
Allora dove sei al navigator? 

[CUT]
        rst.Edit
        rst ("CurriculumLink") = strAttach
        rst.Update
        rst.Close
        Me.Requery

E cmq anche se aggiorno quel campo a "" in realtà il >percorso rimane.
Certo che sei forte Giulio...hai voglia di "aggiornare" quel campo...ed io 
"pirla" che ti vengo dietro...
        rst.Edit
        rst ("CurriculumLink") = strAttach
        rst.Update
        rst.Close
        Me.Requery
Buona lavoro :-)
Gaspare

[CUT]
Giulio->"sei un'elemento davvero pericoloso" -> fai "rintronare" una persona 
nel giro di 10 minuti...sei un "terminator" umano ;-)

 ha scritto nel messaggio 
news:1118575977....@g44g2000cwa.googlegroups.com...
---- omissis ----
Dove sbaglio?
Grazie.
[risposta]
Due cose:
1 - cerca di smetterla di inviare più messaggi per lo stesso problema; 
incasini chi vorrebbe risponderti o non te ne sei accorto?
2 - se devi visualizzare una anteprima di un documento word inserisci in una 
form una "cornice oggetto associato" e con il codice puoi visualizzare il 
documento:
Me!AssociatoOLE8.SourceDoc = Me!nomeFile
Me!AssociatoOLE8.Action = acOLECreateLink
Ciao.
-- 
Sergio MAZZA 

[CUT]
Ciao Sergio,
come va?
Buona domenica :-)
Giulio si trova spesso al navigator (..."a gettoni"...) per cui scrive e 
riscrive tutto quanto con la fretta...
Alla prossima ;-)
Gaspare 

Scusate ma non ero davanti al pc.
Per Gaspare: si si, ritorna correttamente il nome del file selezionato.
Ma rst("CurriculumLink") perchè va scritto così? Per gli altri campi
basta scrivere rst!NomeCampo. Come mai questa differenza?
Per Sergio: grazie :) ma nella riga
Me!AssociatoOLE8.SourceDoc = Me!nomeFile
Me!nomeFile sarebbe 
ad.es
 Me!CurriculumLink che contiene il percorso?
Ora farò delle prove e vi farò sapere :)
Grazie.

 Gaspare
Ciao.
-- 
Sergio MAZZA 

 ha scritto nel messaggio 
news:1118598533.4...@o13g2000cwo.googlegroups.com...
Scusate ma non ero davanti al pc.
Per Gaspare: si si, ritorna correttamente il nome del file selezionato.
Ma rst("CurriculumLink") perchč va scritto cosě? Per gli altri campi
basta scrivere rst!NomeCampo. Come mai questa differenza?
Per Sergio: grazie :) ma nella riga
Me!AssociatoOLE8.SourceDoc = Me!nomeFile
Me!nomeFile sarebbe 
ad.es
 Me!CurriculumLink che contiene il percorso?
Ora farň delle prove e vi farň sapere :)
Grazie.
[risposta]
Arguto!
Ciao.
-- 
Sergio MAZZA 

basta scrivere rst!NomeCampo. Come mai questa >differenza?
Puň darsi che sia dovuto al fatto che c'č un controllo sul form che ha lo 
stesso nome del campo e magari l'applicativo "inizia a dare i numeri"...tu 
che ne pensi?
Funziona o no? Non ti porre "tanti perchč" sopratutto la domenica...lascia 
il cervello in "standby"   ;-) 

Beh insomma.... Sergio non ha tutti i torti.....però in effetti....in
questi giorni mi son abbastanza esaurito. Scrivo e riscrivo
codice....apparentemente dovrebbe andare, e a volte non va.
Poi vedo che Access e gli OLE hanno un rapporto strano: se mi chiede di
salvare un record mentre un'anteprima è aperta mi vedo tutti i campi
del record corrente sovrascritti con il nulla e alcuni con caratteri
strani....Update non funziona, l'assegnazione di una stringa vuota ""
nemmeno, e tutto *sembra*  a posto a livello di codice.
Prendete 
per.es
. la stringa SQL INSERT INTO: quanto tempo e quanti post
per farla funzionare? Mi hanno anche aiutato via email, ma non va! Ed
io non so perchè.
Ed il codice postato sopra: sembra in odrine ma non elimina il
percorso. Perchè?
Sono tutte domande che non hanno risposta, apparentemente, ed io non
riesco a capire il perchè :(

Ma infatti c'è appunto un controllo sulla form che ha lo stesso nome
del campo.
Ota vado su, scrivo eseguo e torno :)
Per Sergio: :D

 stare?
E perchè mai? La gente come te è "unica" ed "insostituibile" ;-)

 ha scritto nel messaggio 
news:JK_qe.901$h5.4...@news3.tin.it...

Non sai che ti perdi...
Ciao.
-- 
Sergio MAZZA 

Oi, Gaspà....ciò provato ma non va :)
Ecco il codice:
Private Sub cmdEliminaCurriculum_Click()
Dim rst As DAO.Recordset
Dim strAttach As String
If Not IsNull(Forms!frmSchedaPrimoCon­tatto!CurriculumLink) Or
(Forms!frmSchedaPrimoContatto!­CurriculumLink <> "") Then
    If MsgBox("Sei sicuro di voler eliminare il CV di " &
UCase([Forms]![frmSchedaPrimoC­ontatto]![Nome] & " " &
[Forms]![frmSchedaPrimoContatt­o]![Cognome]) & " ?", vbQuestion +
vbYesNo, "Eliminazione Curriculum") = vbYes Then
        Set rst = CurrentDb.OpenRecordset("tblUt­enti")
        strAttach = ""
        Forms!frmSchedaPrimoContatto!C­urriculumLink.Value = strAttach
        rst.Edit
        rst!("CurriculumLink") = strAttach
        rst.Update
        rst.Close
        Me.Requery
        MsgBox "CV eliminato", vbInformation, "Eliminazione Curriculum"
    End If
Else
    MsgBox "Nessun CV per l'utente corrente", vbInformation,
"Eliminazione Curriculum"
End If
End Sub
aggiungendo le parentesi e le virgole mi dice 'Errore di conversione
dei tipi. Il tipo di dati non corrisponde a quello dichiarato" (più o
meno)
Ed anche dichiarando Dim CurriculumLink as DAO.Field non cambia nulla.
Nè togliendo i doppi apici.
Boh! :(

 ha scritto nel messaggio 
news:1118599074.5...@g43g2000cwa.googlegroups.com...
Beh insomma.... Sergio non ha tutti i torti.....perň in effetti....in
questi giorni mi son abbastanza esaurito. Scrivo e riscrivo
codice....apparentemente dovrebbe andare, e a volte non va.
Poi vedo che Access e gli OLE hanno un rapporto strano: se mi chiede di
salvare un record mentre un'anteprima č aperta mi vedo tutti i campi
del record corrente sovrascritti con il nulla e alcuni con caratteri
strani....Update non funziona, l'assegnazione di una stringa vuota ""
nemmeno, e tutto *sembra*  a posto a livello di codice.
Prendete 
per.es
. la stringa SQL INSERT INTO: quanto tempo e quanti post
per farla funzionare? Mi hanno anche aiutato via email, ma non va! Ed
io non so perchč.
Ed il codice postato sopra: sembra in odrine ma non elimina il
percorso. Perchč?
Sono tutte domande che non hanno risposta, apparentemente, ed io non
riesco a capire il perchč :(
[risposta]
Secondo me č proprio la fretta che ti frega; quando hai un problema non devi 
indicare solo quello ma anche descrivere quello che vorresti fare senza 
indicare il come, perché al problema ci sono varie soluzioni. Quella che piů 
ti aggrada la scegli tu.
Ho provato a seguire il problema della Insert Into proprio perché lo 
spalmavi per tutto l'NG non mi ci sono "applicato".
Non ci sono soluzioni che "...apparentemente dovrebbe andare, e a volte non 
va."; o va o no! Altrimenti fai degli errori nell'analisi del problema e nel 
cercare la soluzione ti affidi alla prima che ti viene in mente... E secondo 
me non č la strada per il Paradiso...
Ciao.
-- 
Sergio MAZZA 

[CUT]
        >rst.Edit
        >rst!("CurriculumLink") = strAttach
        >rst.Update
        >rst.Close
        >Me.Requery
A Giulio...che famo come la volta del focus?
rst("CurriculumLink")-> non rst!("CurriculumLink")
se  sei in elimina usa rst.Delete...
Prova a mandarmi il db...fallo per me  ;-)
gasp...@infinito.it

Scusa Sergio, hai perfettamente ragione non credere che non lo sappia.
Vedi, se hai letto un mio recente post capirai in che guaio mi trovo.
Non sono un professionista. Sono da solo senza nemmeno internet a casa
a progettare il mio primo database. E mi mettono fretta. E se lo faccio
bene e gli piace *forse* potranno pensare di adottarlo per tutto l'ente
e sempre *forse* richiamarmi.
Anche se è un'ipotesi campati in aria.
Per quanto riguarda l'INSERT INTO, ho un dabase d'esempio in cui faccio
vedere proprio cosa voglio fare, lo ha anche CINZIA, e Napoleone.
Insomma....sembra che però la sintassi non sia mai corretta.
Per quanto riguarda i CV: per ogni utente bisogna allegare il suo.
Quindi con un pulsante aprirlo, con un altro eliminarlo, con il primo
pulsante allegarlo. Riesco a fare tutto, anche l'anteprima ma:
1. se uso HyperlinkAddress non so come azzerare la stringa del campo
quando decido di eliminare il CV per un utente. La sinstassi che ho
scritto io non va bene, quella suggerita da Gaspy mi da errore di
conversione del tipo.
Ho molto da studiare. Certo. Ma in questi frenetici giorni non ho avuto
nemmeno il tempo di dormire :(
Cmq chiedo scusa ancora una volta.
E grazie per tutta la pazienza che avete con me :)

Okkei ti mando il piccolo capolavoro dammi 5 min così tanto poi entro
il 30 lo diamo a tutti ;)
Gaspy: sei un amicone :)

Gasp: funziona così :) grazie.
Però ora che ti mando il database dai anche un'occhiata al codice
sull'anteprima.
Se il campo CurriculumLink è vuoto deve mostrare una msgbox :)
UPATE: ti ho mandato una email a studioieducation. Controlla!
Ciao!!!!!

Gaspy: sei un amicone :)
Fossi in te non mi "illuderei"...ho la mia buona dose di "egoismo" ;-) 

E va bè! Chi non lo è, un pò egoista! Io quando trovo qualcosa da
mangiare dentro il frigo faccio piazza pulita :)

[CUT]
Ricevuto...a domani -> altrimenti mia "moglie" domattina va da un 
"divorzista" ;-)

 ha scritto nel messaggio
news:1118602344.8...@g44g2000cwa.googlegroups.com...


Ciao!!!!!
Ciao Giulio ,scusa se mi intrometto.
Il tuo entusiasmo è meritevole ma vorrei farti notare una cosa.
Questi ng è pubblico e quindi scambiarsi i db per farsi correggere
gli errori non va bene perchè chi segue i post poi non arriva alla
soluzione.
Devi sforzarti di arrivare da solo alla soluzione questo anche per affinare
le tue capacità di programmatore.Il ng può indicare una strada , dare uno
spunto
suggerire anche del codice ma con il fine di far partecipare tutti.Se
mettiamo
tra due mesi un'altro frequentatore del ng avesse il tuo stesso problema
magari
troverebbe il tuo post su google ma non avrebbe poi la soluzione se tu mandi
il tuo
db ad un'altra persona e poi quella te lo corregge ,te lo rimanda e amen,
non credi?
Cerca anche di considerare più attentamente ciò che ti ha scritto Sergio
Mazza.
Saluti
SunRex

Ciao Sun, ma hai ragione. Vedi questa notte ho fatto le 4.30 per capire
il codice che Napoleone mi aveva mandato per posta e relativo ad una
modifica che lui aveva fatto ad un db d'esempio che gli avevo mandato.
Ma ho riscontrato un problema del quale non sono riuscito venire a
capo.
La necessità nasce proprio da questo: dal fatto che devo finire questo
lavoro e l'aiuto, anche in privato, dei membri del ng per me
FONDAMENTALE.
Ed è proprio per questo che sto rilasciando il mio database in giro:
perchè è un database un pò di tutti voi. Versioni beta ce l'hanno
MAX e Alessandro Cara, cui l'ho spedito ora. Poi lo spedirò anche al
Sitocomune, a dimostrazione di come l'aiuto che mi state dando non
sarà un aiuto di cui beneficerò solo io, e per me è stato - lo
ripeto - FONDAMENTALE perchè senza non sarei riuscito a fare nulla, ma
di cui potranno beneficiare tutti quanti.
Inoltre è proprio per questo che, come Gaspare aveva notato, a volte
mi rispondo da solo o rispondo più volte ad un mio post: per mostrare
la soluzione al problema affinchè sia di dominio pubblico.
D'altra parte, volevo fare proprio un post per spiegare PASSO PASSO la
soluzione che Napoleone mi aveva mandato via email, per farne pertecipi
tutti (un pòdi pazienza e la faccio).
Detto ciò cmq ti ringrazio per dedicarmi parte del tuo tempo, così
coem stanno facendo tutti quanti e come spero di fare io non appena
sarò più di un semplice newbie.
A presto!!!!!