Newsgroup: it.comp.lang.visual-basic
Titolo: Errore idiota su ADODC

CIao a tutti...
allora, quasi risolto in non-problema su ADODC e la griglia dati, ho
un'altro stupidissimo quesituccio da proporvi.
Sempre con il ADODC, ho organizzato il caricamento dei dati via codice,
sfruttando ADODC stesso e il metodo Add....
Ma succede questo....
con il controllo ADODC mi sposto sui record...
premo il pulsante Nuovo per pulire le aree di testo e predispormi cosi a un
nuovo inserimento....
scrivo i valori nelle textbox....
premo il pulsante salva per caricare il recordset....
ERRORE...appare il messaggio "Operazione annullata" appena clicco sui
pulsanti di spostamento dell' ADODC
Perche'?
nel command1_click (pulsante di Nuovo) ho scritto un ciclo FOR EACH ...NEXT
per iterare su tutti i controlli Text e pulirli
Nella sub SAlvaNuovi() ho scritto
with adodc1.recordset
       .addnew
       .fields("pippo") = text1.text
              ..................
       .update
end with
niente di strano quindi...ma l'errore? Sicuramente dovuto a un qualche
puntatore mal eimpostato....
EOFAction = moveLast
CursorType = Dynamic (ma ho provato anche con gli altri)
LockType = optimistic
Grazie
Emanuele

 end with
scusa la domanda...
i controlli sono "bound" con l'adodc?
-- 
Salutoni
Sergio
per rispondere... togli il group dall'indirizzo

 CIao a tutti...
cut
a parte controllare come ha detto cssoft....
è il tipico caso di
fields("RagioneSociale")=text1.text
in cui text1.text vale NULL
ed il DB non lo ammette!!!
:-)
scusa ma in VB6 c'è il bell'evento VALIDATE che è fatto apposta per
controllare l'input prima di sparare cazzate sul DB...
....
;-)
-- 
Il Wodkino Nazionale è a : 
www.martek.it
Pagina Vb/Bestiario/Lamer Experience :
http://www.martek.it/go.asp?portamia=2
 New Entry nel bestiario!
:-)

 ed il DB non lo ammette!!!
wodkino...
sei proprio assolutamente sicuro che text1.text possa valere null? :-P


 sei proprio assolutamente sicuro che text1.text possa valere null? :-P
ops...lunghezza zero scusa!
(pressupongo che usi access)
-- 
Il Wodkino Nazionale č a : 
www.martek.it


 sei proprio assolutamente sicuro che text1.text possa valere null? :-P
-- 
Il Wodkino Nazionale č a : 
www.martek.it


 che vuoi
[cut]
Io ho iniziato ad usare query per la scrittura dei dati da quando e' uscito
ADO, e non ho intenzione di smettere fintantoche' devo far funzionare il
software che scrivo :-D

[cut]
ops..avete ragione ho dimenticato di dire che i campi Text<num>.text son
associati al controllo ADODC,  con
DataSource = ADODC e DataField = <nomecampo database>
per il valore del campo, al momento che io lo pulisco inserisco uno spazio
automaticamente
in teoria dovrebbe essere sufficiente per evitare che si presenti il
problema con i campi vuoti
Grazie
Emanuele


Anche io uso sempre query SQL per leggere, modificare, scrivere, cancellare
dati nei database , ma
non mi andava di scrivere una fraccata di righe di codice che tanto poi no
mi saranno manco pagate....
cosi ho fatto tutto il lavoro in un giorno anziche mettercene tre ....mi
manca solo questo passaggio..
Emanuele


Ho provato anche (me ne stavo dimenticando) a impostare il valore di
EOFAction a AddNew, ma seppur mi consente di salvare i nuovi dati
automaticamente mi si blocca quando cerco di inserire un nuovo record, ma
con tutti i campi vuoti decido di non proseguire e torno indietro.
Emanuele

 ha scritto

anche con campi p.e. di tipo data ?

 ha scritto

che te, anzi ce, ne costera' quattro :)

 DataSource = ADODC e DataField = <nomecampo database>
allora la mia perplessità aumenta.
vediamo se riesco a spiegarmi: tu stai guardando i dati presenti in un
record, premi il tasto "nuovo" che ti "pulisce" il contenuto dei vari text
della form. giusto?
se le cose stanno così, tu hai appena cancellato il contenuto del record che
stavi visualizzando...
prova, ma non garantisco nulla, a fare un adodc.recordset.addnew, alla
pressione del tasto "nuovo", e vediamo che succede...



Non cambia nulla....sempre lo stesso errore...neanch emonitorando la data
serve a eliminare l'errore
pero non e' vero che cancello il record corrente...i miei record ci sono
tutti,...
scusate, ma non capisco...
sembra una banalita e invece ...
Grazie a tutti
EManuele

 sembra una banalita e invece ...
lavora per gradi, cerca di individuare qual è il campo che rompe le scatole.
a proposito, la tabella ha una chiave primaria?



In effetti ma mia intenzione sarebbe stata diversa...pensavo che una volta
coordinato il controllo ADODC con i vari campi, questi si gestissero
automaticamente, consentendo di inserirne uno al fonto (come avviene nelle
maschere di Access); diciamo che imposto la proprieta EOFAction = addnew
allora funziona bene perchč (anche s enon mi pare naturale) facendo prima
click su ultimo e poi su prossimo (i due pulsantini a dx dell'ADODC) lui
aggiunge un record vuoto che io riempio di valori ...ma se poi premo
indietro lui mi da errore perche non vuole campi vuoti...
I campi nel database sono quasi tutti campi di testo, alcuni numerici e ci
sono tre date, che ho gestito controllando se il campo e' valorizzato ,
altrimenti ci ficco dentro la data odierna ( funzione Date)
penso sia sufficiente...
continuo a provare varie soluzioni..spero solo di non farvi perdere tropo
tempo anche a voi...sigh
Grazie
Emanuele

STOPPATE TUTTTTTTTO........... HO TROVATO!!!!!!!!!!
Ragazzi scusatemi ma sono io che sono completamente deficente...e tre ore
abbondanti che mi scalcino le cervella per capire come realizzare una cosa
che pensandoci ora, dopo aver trovato la soluzione, mi pare di un banale ma
di un banale....
Ecco la soluzione:
il pulsante Nuovo contiene solo l'istruzione ADODC.Recordset.AddNew
Il pulsante Salva contiene solo l'istruzione ADODC.Recordset.Update
tutto il resto non serve: non centrano niente neanche le date, dato che se
il controllo ADODC le gestisce in automatico, lavorando da solo, a maggior
ragione deve gestirle in automatico se gliele passo io forzando
l0'automatismo.
VI chiedo scusa per avervi rotto gli zibidei per tutto il pomeriggio.
Grazie
Emanuele

 Il pulsante Salva contiene solo l'istruzione ADODC.Recordset.Update
bene.
adesso vediamo cosa succede se premi tante volte nuovo...


 adesso vediamo cosa succede se premi tante volte nuovo...
Sicuramente da errore.....difatti per logica non e' possibile inserire una
riga completamente vuota...ma questo neanch ein access...credo di dover
monitore l'evento error...
on error resume next penso che sia sufficiente
Emanuel

 ha scritto nel messaggio
news:BaLqc.9670$Wc.3...@twister2.libero.it...

Thunderb, fin'ora mi sono limitato ad osservare. Ma...
Secondo me il modo migliore in cui puoi completare quel pezzo di progetto e'
di uscire a farti una passeggiata, cenare, uscire a prendere una birra, e a
mente fresca riprovare domattina.
Senza offesa ;-)

 adesso vediamo cosa succede se premi tante volte nuovo...
qualcosa del genere:
cmdaddnew_click
    cmdaddnew.enabled=false
    .addnew
cmdupdate_click
    .update
    cmdaddnew.enabled=true
ciao, j. :)


Non l'ho capita ma non importa...difficilmente mi offendo ....
comunque l' On error resume next e' piu' che sufficiente.
Grazie a tutti per la pazienza e per i suggerimetni
Emanuel

 on error resume next penso che sia sufficiente
con le basi e' meglio scordarsi resume next...

 comunque l' On error resume next e' piu' che sufficiente.
Te la spiego :-)
Il bello dei Data Controls e dei Data Bound Controls e' che automatizzano il
90% del lavoro e ti risparmiano dal dover scrivere il codice che collega i
controlli normali ai dati. Usare dei controlli bound e poi andarsi a
scrivere manualmente il codice di collegamento, di lettura e di scrittura...
Altra cosa, se metti un pulsante nuovo, per evitare casini la cosa piu'
banale e' disabilitarlo dopo che l'utente l'ha premuto. Che senso ha
lasciarlo abilitato e ricorrere ad un on error?
Ripeto, non voleva essere offensivo. Solo che  siccome non ti conosco (seguo
poco il NG) non so' se sei un programmatore avviato o uno agli inizi, ed era
solo una battuta scherzosa per sottolineare che stavi facendo un po' di
confusione e che forse avevi bisogno di un attimo di pausa :-)

[cut]
ragazzi voi avete ragione...
diciamo che proprio agli inizi non sono, anche se ho maturato poca
esperienza sul campo e ho sempre fatto un sacco di varianti per sbarcare il
lunario....diciamo che sono troppo confuzionario di natura, e spesso non
riesco a capire al volo certe cose..cosa strana questa, perche io per
natura, sono molto intuitivo...solo non devo essere distratto o
preoccupato...
Grazie
Emanuele