Newsgroup: it.comp.lang.visual-basic
Titolo: DAO - UpdateRecord non ti conosco !

Non riesco a capirci....un' h !
In un form ho degli oggetti testo collegati a dei campi di database Access,
il classico form per inserimento clienti, per intenderci. Apro il form dal
menů mediante una chiamata ad una Public Function presente nel form stesso
che contiene:
datClientiRS.Recordset.AddNew
inserisco testo solo in tre degli otto oggetti Text...poi "ci ripenso" ed
esco dal form senza cliccare sul Button Salva che contiene :
datClientiRS.UpdateRecord
Il form chiude con un datClientiRS.Database.Close
Essendomi accorto del bug nascosto nel mio codice provo a ripetere piů volte
quanto sopra e....
meraviglia ! Tutte le volte mi ritrovo con dati salvati !!
Ma come ? Senza usare datClientiRS.UpdateRecord ? Eh no Eh ?
Suggerimenti?
-- 
Gulp ! Forse mi sono perso qualcosa !

 Ma come ? Senza usare datClientiRS.UpdateRecord ? Eh no Eh ?
non è che quello è un controllo adodc?
non è che magari ci pensa da solo a fare l'update?
--
Salutoni
Sergio
per rispondere... togli il group dall'indirizzo

 Suggerimenti?
Sě, ma tanto li snobbi... Evita i data-eccetera.

 Suggerimenti?
Se proprio vuoi utilizzare il data control allora intercetta la chiusura del
form (Query_Unload),
assegna un valore Textbox1.text = "" ad ogni textbox e poi chiudi....
Comunque io ti consiglio di non uasre i datacontrol, danno poche
funzionalità e molte limitazioni
bye

 Sě, ma tanto li snobbi... Evita i data-eccetera.
Quid dicis Lupus ?
"Magari" mi trovassi nella condizione di snobbare !
Da "bravo" (non so nemmeno quanto) inesperto sono partito usando detti
controlli perchč...
"piů comodi" , ma, quanto sembra, comodi solo ad un primo impatto. !
La vuoi conoscere tutta la veritŕ : non ho mai provato ad aprire, lavorarci
e chiudere un DB da codice....
mi ci metterň !
Grazie

 lavorarci e chiudere un DB da codice.... mi ci metterò !
Fallo e cerca di riconvertire il tutto, intanto che sei (se lo sei) in
tempo.

 funzionalità e molte limitazioni
Al momento devo risolvere. Ma mi sono ripromesso di metterci mano ed
eliminare questa tipologia di controllo.


 MSDN relativamente a Query_Unload recita :
non fare confusione tra l'evento unload e il QueryUnload.
per il primo, ormai i controlli sono persi, il secondo invece serve per
chiederti il permesso di chiudere, quindi tutto č ancora attivo.
per evitare l'aggiornamento dei dati, prova a vedere se il controllo data ha
un metodo per rifiutare l'update (CancelUpdate o simili)


 un metodo per rifiutare l'update (CancelUpdate o simili)
Non credo che vi sia un metodo del genere. io ho lavorato con i data control
all'inizio e sono riuscito a risolvere il problema esposto in precedenza
solo interettando l'evento query unload.
Credo quindi che Gulp potrebbe usare questo metodo.
Di + nin sň!
bye

 Grazie

 Se li conosci li eviti.
e se li usi lieviti ?


 precedenza solo interettando l'evento query unload.
il controllo no, ma il recordset sě.
hai provato ad usare quello?


 e se li usi lieviti ?
rivendico l'esclusiva nell'uso dei lieviti.
sia nel campo dell'home brewing, che in quello dell'home pizzing.
diffidate dalle imitazioni.
nice to read you. (si dice così?)


 data ha un metodo per rifiutare l'update (CancelUpdate o simili)
Purtroppo no.
Tra le proprietà non c'è tale "stupefacente" possibilità.
Nemmeno con un bel Refresh prima di chiudere, riesco a cavarmela !
Comanda datacontrol !
Sono in "braghe de tela"
Non resta che "sopprimere" datacontrol e passare a codice !
Mi sento un po' spaesato.
Ciao e grazie


 Tra le proprietà non c'è tale "stupefacente" possibilità.
prova ad usare quello del recordset, come hai fatto per l'addnew


 vocativo :P
Uaho ! Te ghe rason !
Grazie della correzione...
Ciao


 prova ad usare quello del recordset, come hai fatto per l'addnew
Ma certo! Hai ragione ! Mi perdo in un bicchier...
di prosecco !
Ho provato,chiudendo con:
If Completo(Me) = False Then            'funzione che controlla che tutti
gli oggetti testo contengano una stringa
datClientiRS.Recordset.CancelUpdate
End If
ma mi da errore 3020: metodo Update o CancelUpdate senza AddNew
che invece è regolarmente presente in Form_Load (Form Nuovo Cliente)
-


 che invece è regolarmente presente in Form_Load (Form Nuovo Cliente)
dovrebbe voler dire che l'update è già stato effettuato.
porca pupattola, ma quand'è che updata, costui? :-(
vado a fare una sosta fisiologica, faccio due prove e torno.
naturalmente la soluzione giusta è quella di lupo, sia chiaro che in questo
momento stiamo solo cercando di mettere una pezza :-)


 diffidate dalle imitazioni.
soprattutto diffidate delle limitazioni :P
--
oggi va cosi' :)

 questo momento stiamo solo cercando di mettere una pezza :-)
Sono d'accordo. Per il momento mi serve "rammendare"  :-)
-- 


 questo momento stiamo solo cercando di mettere una pezza :-)
P.S. non scrivere Lupo minuscolo. Non vorrei che ti mettesse.. "il muso"
-- 


 [ŠGulp] scrisse:
Riesco a far funzionare la cosa solo cosě:
Private Sub cmdMenuButton_Click()
If Completo(Me) = False Then
datClientiRS.Recordset.CancelUpdate
End If
Unload Me
frmMenu.Show
End Sub
Ma resta la domanda che hai posto.
Interessante a livello di conoscenza: Quando effettua l' Update sto
benedetto datacontrol ?
Forse ad ogni singola, infima modifica fatta sugli oggetti testo collegati ?
-- 


 hai provato ad usare quello?
col recordset non ho avuti di questi problemi. č per questo motivo che sto
riconvertendo quasi tutti i miei vecchi programmi dal datacontrol al
recordset.


ma ora datClientiRS.Recordset è ancora il controllo data control o hai
creato un recordset?

 Forse ad ogni singola, infima modifica fatta sugli oggetti testo collegati
?
L'update viene effettuato alla chiusura. ecco perchč ti suggerivo di fare
textbox1.text="".
In questo modo vengono viste le caselle di testo come vuote e non fa alcun
update....

Sorry. ho letto male il post di prima. si tratta ancora del data control...

 creato un recordset?
datClientiRS è il nome del controllo....senza di lui non potre scrivere:
datClientiRS.Recordset.Addnew
ma dovrei prima scrivere Open ... ecc. ecc.
-- 


 alcun update....
Mica vero! Mi inserisce una riga vuota !


riga vuota? asp che controllo su un vecchio progr mio....

Il codice corretto è:
text1.text = ""
datClientiRS.Refresh
così dovrebbe funzionare.

Forse potrtei risolvere cosě:
Scollegare gli oggetti testo dal DB e usare per l' inserimento una classica
routine:
datClientiRS.Recordset.AddNew
datClientiRS.Recordset.Fields("COGNOME") = oggettocognome.text
datClientiRS.Recordset.Fields("NOME") = oggettonome.text
datClientiRS.Recordset.Update
-- 


 cosě dovrebbe funzionare.
Si funziona,ma non se posto negli eventi di "scarico" del form
per cui la domanda....(o č diventata un sofismo?) che ponevamo CSSoft
ed io resta: quando avviene l' Update di un controllo data ?


L'update (č la 3a volta che lo scrivo....) avviene alla chiusura del form (č
chiaro che se usi il metodo refresh allora fa automaticamente l'update).

 Se li conosci li eviti.
io li conosco eppure non trovo un valido motivo per eliminarli !
Lavoro esclusivamente con DAO e con oggetti DATA e porca miseria proprio non
riesco a capire perche' passare all'uso di Dao da codice premesso che :
Uso solo Db Access97 perche' + piccoli
Mi piace avere un oggetto che posso vedere che contenga il mio rcs
Ora approfitto del 3ad e chiedo a voi DaoIani Codeschi  : Pecche' ? Pecche'
?  Pecche' ?
-- 
-Gigio@Work(?)-

 ?  Pecche' ?
Perchè la potenza è nulla senza il controllo
azz
il controllo inteso come possibilità di controllare, non come controllo data
control    :P

 che invece è regolarmente presente in Form_Load (Form Nuovo Cliente)
Scusa ma risolvi alla radice :
Avrai sta form con dei bottoni tipo SAlva e Annulla no ?
form_load
    Apri la connessione col Db e Rcs
    data1.dbname...
     data1.recordsur...
    data1.refresh
end sub
cmdSalva_click
    if controll(me) then
        .addnew
        !campo1 = text1 ....
        ....
        .update
    else
        Msgbox "Completare i campi richiesti"
    end if
end sub
cmdAnnulla
    'non hai nulla da annullare perche' non c'e' nulla di Aperto in giro
    'se non svuotare le TextBox
end cmq
form_queryunloaf
    'Chiudo il Db e la connection
    data1.recordset.close
end sub
-- 
-Gigio@Work(?)-

 datClientiRS.Recordset.Update
Esatto , vedi l'altro mio post !
PS puoi abbreviare la scrittura di codice cosi :
With datClientiRS.Recordset
    .addnew
    ![Cognome] = oggettocognome.text ' Il ! abbrevia ulteriormente la voce
"Fields
                                                            ' usa sempre le
parentesi quadre per i nomi di campo strani !
    .update
End With
-- 
-Gigio@Work(?)-

 Esatto , vedi l'altro mio post !
ma, a questo punto, perchč utilizzare il controllo data?
ah, beata gioventů... ;-)


 controllo data control    :P
bhe io ci lavoro poco coi Db, pero' non vedo tutta sta necessita' di usare
codice !
-- 
-Gigio@Work(?)-

 Pecche' ?  Pecche' ?
A me lo chiedi? Non lo so, non li ho mai usati. Direi che basta leggere
qui...

 muso"
ha ben altri motivi, per mettermi il muso, se vuole. :-)
ma ho come la sensazione che non voglia ;-)


 ah, beata gioventů... ;-)
Magari!
Fanno 47 ! Ed č per quello che sono in queste "condizioni" ! :-)
TROVATO, TRIOVATO,TROVATO
Scusa l'urlata !
Quando fa l' Update ?
Ho risolto cosi':
Private Sub datClientiRS_Validate(Action As Integer, Save As Integer)
  'Posizione per il codice di convalida
  'Questo evento viene richiamato quando si verificano le seguenti azioni
  Select Case Action
.......
  End Select
 If Completo(Me) = False Then
    Save = 0
 End If
End Sub
Dopo aver cercato su MSDN Evento Validate (controllo Data)


 TROVATO
Beh
Dimmi almeno se č corretto o se devo aspettarmi
sul DB una atomica con esplosione ritardata. :-)


 sul DB una atomica con esplosione ritardata. :-)
ma la mia soluzione ? :(
-- 
-Gigio@Work(?)-

 leggere qui...
Dove dove ?
Per adesso ho capito che le loro capacita' sono limitate rispetto
all'utilizzo da codice, cmq visto che per me per adesso non e' affatto
limitato penso che li usero' ancora per molto !
-- 
-Gigio@Work(?)-

 sul DB una atomica con esplosione ritardata. :-)
e tu dammi almeno il tempo di mangiare :-)


 Dimmi almeno se č corretto
leggendo la guida direi di si.


 ma la mia soluzione ? :(
Anch'io scrivevo qualche post piů su che
intendevo trovare una soluzione temporanea,
si trattava di trovare una pezza per mantenere il controllo data.
Nelle intenzioni l'idea di passare a puro codice mi attira...diciamo che mi
sento
"on pelegrin" ad usare il controllo data e scrivervi di ciň in questo NG.
Devo perň ammettere di aver fatto un ragionamento: quello che stiamo usando
č un sistema di sviluppo orientato all' uso di oggetti.... speriamo adesso
Lupo non si metta a ringhiare, ma allora perchč scrivere puro codice....
risposta: per non avere problemi del tipo che ho riscontrato...ma il
problema l'ho risolto e, mi sembra, a detta di CSSoft, non in malo modo....
Non č che un uso "accorto" del controllo data permetta alla fine di
risparmiare di scrivere codice ?
In fin dei conti si č smesso anche di creare oggetti testo da codice...
emm .... mi sono giŕ armato di scudo per parare i "colpi".  :-)
......perdonatemi !
Ciao e grazie a tutti


 In fin dei conti si č smesso anche di creare oggetti testo da codice...
Prego? Io non capire, spiegare, prego...

 Prego? Io non capire, spiegare, prego...
Si, intendo dire, come facevi con QBasic a creare graficamente una immagine
a casellina in grado di accettare una stringa di testo e di avere un dato
sfondo e di avere un dato forecolor e quant'altro ?
10 codice
20 codice
30 codice
Ora invece prendi l'oggetto e lo trascini sul form.... mica cosa da poco !


 poco !
Ma vaaaaaa, corri che ti son dietro... ;-)

 Ma vaaaaaa, corri che ti son dietro... ;-)
E quando mordi affonda poco !


 ha scritto

premesso che con ado sto usando parecchio il dc perche' ancora non mi sento
sicuro, prova una cosa del genere:
metti un dc che punta a una tabella di 90k righe, con una dbgrid collegata.
prova un
    do while not eof
        caption=data1.recordset!id
        movenext
    loop
poi prova la stessa cosa con un rs dichiarato con dim.
ciao, a.

 limitato penso che li usero' ancora per molto !
Io ho capito che hanno comportamenti strani e incontrollabili, nonchč
errori.
Spesso si dimostrano obsoleti (nel senso che proprio non vedono qualcosa di
nuovo).
A proposito, ci dici come aprire, via Data-eccetera, un database in formato
Access 2000 con password?

 formato Access 2000 con password?
Bhe rileggi le premesse, Access2000 lo odio, ha DB ,molto + grandi del 97,
ora come gia detto + volte non sono esperto di Db , quindi l'uso che ne
faccio e' relativamente poco e limitato, e' come se prendessi la ferrari per
fare 200metri di strada, certo , la ferrari e' la ferrari, ma per 200m di
strada non mi serve !
Intanto per curiosita' provo il codice di J !
-- 
-Gigio@Work(?)-