Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Cancellare 1° record del recordset

Salve a tutti
Ho una tabella alla quale sono collegato tramite la connessione cn.
In questa tabella, ho problemi nel cancellare il primo record.
Questo il comando che eseguo:
cn.Execute "delete from tabella where fattura=" & txtfattura.text & " and
data=" & "#" & txtdata.text & "#" & "
Premetto che per tutti gli altri record, tutto funziona perfettamente mentre
per il primo, viene eseguito ma non cancella il record.
Ciao
Fabio

 Salve a tutti
Saluti anche a te
[Fabio]
 Ho una tabella alla quale sono collegato tramite la connessione cn.
In questa tabella, ho problemi nel cancellare il primo record.
cn.Execute "delete from tabella where fattura=" & txtfattura.text & " and
data=" & "#" & txtdata.text & "#" & "
uhm, sicuro che il problema dipenda dal fatto che sia il primo record?
Sai in che formato devi scrivere la data perchè la query "trovi" il record?
Salutoni
Sergio

 ha scritto nel messaggio
news:oi9y9.78200$aL4.2...@news1.tin.it...

Per curiosità, qual'è data e numero della fattura?
(Possibilmente *esattamente* come sono scritti nei relativi TextBox).
Alberto

 wrote in message
Pl9y9.78233$aL4.2...@news1.tin.it...

Ho problemi solo con il primo record. Con tutti gli altri cancella che è una
bellezza.
Questo mi fa pensare che le impostazioni sono corrette.
Ciao
Fabio

 wrote in message
wn9y9.122733$%M1.31...@twister2.libero.it...

Numero fattura: 153; data: 2/12/2002.
Ciao
Fabio

Fabio ci informa:
Ho problemi solo con il primo record. Con tutti gli altri cancella che è una
bellezza.
Questo mi fa pensare che le impostazioni sono corrette.
perdona la scarsa fiducia e la conseguente, reiterata, domanda indiscreta:
con che formato è scritta la data che vai a cercare, nella tua istruzione
sql?
(un indizio ulteriore: è gg/mm/aaaa o mm/gg/aaaa?)
ah, dimenticavo, su che database ti appoggi?
Saluti
Sergio

 wrote in message
Sy9y9.78337$aL4.2...@news1.tin.it...

Il db è Access 2000 la data è impostata come segue: gg/mm/aaaa
Ciao
Fabio

 Numero fattura: 153; data: 2/12/2002.
Fattura 153 del 12 Febbraio 2002.
Sembra scritto bene.
Al limite prova a mettere 02/12/2002.
ciao
Alberto

"Fabio"
 Il db è Access 2000 la data è impostata come segue: gg/mm/aaaa
Bingoooooooo! ;-)
Scusa il messaggio, è solo che sei la quattrocentesima persona che bazzica
da queste parti con questo tipo di problema.
Il dialetto sql del database access (e forse non solo quello, ma non mi
sbilancio) gestisce le date in formato mm/gg/aaaa, c.d. formato americano.
il problema è che qualche volta interpreta la data anche nel formato per lui
scorretto, e quindi spesso trai in inganno l'ignaro sviluppatore
riprendendo a questo punto la tua istruzione, dando per sontato che in
txtdata sia contenuta una data valida in formato gg/mm/aaaa, dovresti
scrivere:
cn.Execute "delete from tabella where fattura=" & txtfattura.text & " and
data=" & "#" & format$(txtdata.text, "mm/dd/yyyy") & "#" & "
prova e facci sapere
Salutoni
Sergio

"Albe V°"
(snippone)
sto capendo male, oppure stai tentando un approccio didattico/paradossale?
(potrebbe avere la sua efficacia, in effetti)
Salutoni
Sergio

 ha scritto nel messaggio
news:lN9y9.78459$aL4.2...@news1.tin.it...

Quello che mi dà da pensare è che la fattura non può essere del 2 Dicembre
2002 (a meno che non siamo in ambiente di prova...), per cui credo sia
veramente del 12 Febbraio 2002...
Comunque hai colto l'approccio ironico/fintotonto/paradosso del mio post...
Ciao
Alberto

 wrote in message
dH9y9.78407$aL4.2...@news1.tin.it...

A questo punto nasce spontanea la domanda: perchè con gli altri record
questo formato di data funziona?
Ciao
Fabio

 wrote in message
YU9y9.122852$%M1.31...@twister2.libero.it...

Siamo in ambiente di prova e la data che ho impostata è 02/12/2002 come 12
Dicembre 2002.
Ciao
Fabio

 wrote in message
oi9y9.78200$aL4.2...@news1.tin.it...

A titolo informativo: ho cancellato record che avevano data 21/12/2002 in
questo formato.
Ciao
Fabio

 ha scritto nel messaggio
news:YU9y9.122852$%M1.31...@twister2.libero.it...


 questo formato di data funziona?
I casi possono essere diversi.
Il piů probabile č che gli altri record siano stati immessi con un Insert da
VB, per cui la data č stata sbagliata sia in inserimento sia nel where,
mentre questo record č stato inserito, ad esempio, da finestra di Access
(dove contano, stavolta sě, le impostazioni internazionali), e quindi č
giusta, mentre nel where č sbagliata.
Oppure, come spiegava Sergio, che negli altri record il giorno del mese sia
superiore a 12, per cui Access effettuava automaticamente la correzione del
tuo errore.
Ciao
Alberto

Fabio ha scritto:
 Siamo in ambiente di prova e la data che ho impostata è 02/12/2002 come 12
 Dicembre 2002.
ecco cosa succede a cercare di costruire un post con un "quote" leggibile:
nel tempo che ho impiegato a scriverlo, fabio aveva già risposto!!!!
Salutoni
Sergio

 questo formato.
21>12
ciao
Alberto


Ciao, ho seguito brevemente il tuo scambio di messaggi con gli altri.
Ho avuto anche io problemi simili tempo fa; anche se il comportamento non è
così simpatico ti posso dire che:
La data 12/02/2002  viene trattata dal DB come vuole perchè formalmente
giorno e mese hanno valori "interscambiabili".
La data 21/12/2002 invece ha giorno e mese non interscambiabili, e quindi il
DB non te le può girare a suo piacimento.
Sono convinto che se inserisci una data del tipo 08/05/2002 (8 maggio 2002)
lui te la gira in 5 agosto 2002
Questo è quanto.
CIAO

 lui te la gira in 5 agosto 2002
Certo.
Anche perchè questo è lo standard Access, ben documentato.
Non è del tutto corretto dire che il DB gestisce la data 'come vuole'. Se la
data ha un formato corretto, Access la interpreta correttamente come
mm/gg/aaaa. Se, invece, viene fatta l'inversione giorno/mese rispetto allo
standard Access, anzichè inchiodare la query, Access corregge
automaticamente l'errore.
ciao
Alberto

 wrote in message
Aoay9.78752$aL4.2...@news1.tin.it...

Per quanto riguarda la data (futura), è una data che ho inserito a caso (per
comodità delle mie dita); per quanto riguarda l'intercambiabilità delle
posizioni nella data, anche io ho pensato a questa possibilità, quindi ho
inserito diverse date su tre record distinti: 02/12/2002; 21/12/2002;
31/12/2002.
La fattura con data 02/12/2002 è la prima del recordset quella che non
riesco a cancellare. Le altre (che a quanto ho capito dovrebbero avere un
formato sbagliato) sono state cancellate regolarmente e senza messaggi di
errore.
Ciao
Fabio

 questo formato di data funziona?
Dimenticavo un consiglio.
L'approccio di Fabio al problema è stato molto sbagliato, per due motivi:
1)
Appena visto un problema, si è concentrato su un solo indizio (il record era
il primo del recordset), trascurando di verificare tutti gli altri aspetti.
Oltretutto, che un record sia il primo di un recordset è un fatto puramente
casuale, se non c'è un order by esplicito nella Source del recordset.
E quando Sergio gli ha messo la pulce nell'orecchio (Verifica il formato
della data), Fabio ha anche insistito sul fatto che il record fosse il
primo. Un approccio abbastanza diffuso, ma che impedisce di trovare i
problemi.
2)
Con Access, la prima cosa da fare quando c'è un problema di questo tipo, è
mettere la stringa SQL completa in una finestrella SQL di Access, e farla
eseguire. Eventuali errori appaiono subito. Se non ci sono errori, ma non fa
quanto richiesto (come in questo caso), basta creare la query con il wizard
di Access, e visualizzarla in formato SQL. Con questa procedura, siccome nel
wizard le impostazioni internazionali contano, avrebbe scoperto tutto in
circa 30 secondi netti, confrontando la query generata con la propria.
Ciao
Alberto

 questo formato.
questa data non la puoi leggere formato sia americano sia italiano.
2/12/2002 si'. e li' access (almeno: access italiano, su win italiano,
con regolazioni italiane) avevo notato che aveva una spiccata tendenza
a incasinarsi.
lo standard sql temo sia il formato americano.
personalmente preferisco formule tipo
    where month(date)= and day(date)
meno ambigue in qualunque ambiente
per una panoramica sulla data, tema complesso, puoi provare con google
a cercare
    sql standard date format
trovi molte cose, fra cui (in un gran bel sito)
http://www.4guysfromrolla.com/webtech/tips/t022202-1.shtml
scritto non a caso da un italiano...
--
ciao, j.
www.sundaysw.com

 errore.
Appunto:
21>12
31>12
2<12
CVD
Alberto

 wrote in message
aqbcut$8581f$1...@ID-51318.news.dfncis.de...

Scusate ma non riesco a capire.
La spiegazione che mi avete dato è chiara. Tuttavia continuo a chiedermi:
sebbene la data 02/12/2002 potrebbe essere confusa, cioè intesa come
mm/gg/aaaa, la data 31/12/2002 no e quindi a questo punto avrei dovuto
ricevere un messaggio di errore come già accaduto in precedenza. Perchè non
è accaduto? Devo vedere questa cosa come un possibile bug?
Ciao
Fabio

 ha scritto nel messaggio
news:HWay9.78930


 wrote in message
aqbegi$8lsuq$1...@ID-51318.news.dfncis.de...

Ti ringrazio
Ciao
Fabio


non è un possibile bug: quando access si vede arrivare una data tipo
31/12/2002 fa questo ragionamento:
essa data, interpretata come mm/dd/yyyy, non ha alcun senso, vediamo se
riesco a darglielo..... allora, se inverto i mesi con i giorni.....si! i
conti tornano.... è il 31 dicembre del 2002
quando invece si vede arrivare una cosa tipo 02/12/2002 ragiona così:
essa data interpretata come mm/dd/yyyy ha un senso: è il 12 febbraio del
2002, per me va bene...
Considera che il primo ragionamento, nelle intenzioni di chi l'ha scritto
dentro al sistema, vorrebbe essere di aiuto!
il risultato invece, come hai potuto constatare, è potenzialmente
catastrofico...
Salutoni
Sergio


Ti è già stato detto in almeno 3 post (e se li conto bene forse anche di
più...).
SE LA DATA NON E' 'FRAINTENDIBILE', ACCESS CORREGGE L'ERRORE ANZICHE'
PIANTARE LA QUERY.
[AlbeV°]
Se, invece, viene fatta l'inversione giorno/mese rispetto allo
standard Access, anzichè inchiodare la query, Access corregge
automaticamente l'errore.
[AlbeV°]
Oppure, come spiegava Sergio, che negli altri record il giorno del mese sia
superiore a 12, per cui Access effettuava automaticamente la correzione del
tuo errore.
[CSSoft]
il problema è che qualche volta interpreta la data anche nel formato per lui
scorretto, e quindi spesso trai in inganno l'ignaro sviluppatore
Quindi, nessun Bug.
Il comportamento di Access è esattamente quello che prevede la
documentazione.
Se qualcuno non si studia la sintassi, e fa un errore, Access è troppo buono
e corregge l'errore, ma solo se questo è chiaramente un errore, altrimenti,
se la data per lui ha un senso, anche se diversa da quella che intendeva lo
sviluppatore, lui giustamente la interpreta.
ciao
Alberto

 wrote in message
aqbcut$8581f$1...@ID-51318.news.dfncis.de...

VI ringrazio, siete stati molto pazienti.
Ciao
Fabio