Newsgroup: it.comp.lang.visual-basic
Titolo: vb6: rs.delete su ado e as400

Salve a tutti,
ho un problema nel cancellare il record corrente con
rs.Delete adAffectCurrent
mi ritorna come errore "il provider in uso non supporta il metodo". Come db 
utilizzo as/400 e il file è journaled... riporto un estratto del codice:
db400.ConnectionString = "Provider=IBMDA400;Data Source=<ip>;User 
Id=<user>;Password=<pass>;"
db400.Open
rs.Open "Select * from pippo", db400
Do While Not rs400.EOF
    rs.delete adAffectCurrent <---- errore: il provider in uso non supporta 
il metodo
    rs.movenext
loop
quello che vorrei è eliminare il record corrente... al momento non ho una 
chiave per identificare il record, motivo per cui non posso fare una 
classica delete in sql...
come potrei risolvere?
grazie a tutti
 

 come potrei risolvere?
Credo sia lo stesso motivo per cui ti da errore ADO, oltretutto il delete
mentre cicli non so se da problemi.
Al limite ti costruisci la where su tutti i campi
WHERE campo1=valore1 AND campo2=valore2 ecc.
Oppure se il tuo codice è reale, basta una delete senza WHERE perchè
cancelli tutto.

 grazie a tutti
ma così perchè?
...in pratica cancelli tutto!
non fai prima a fare
(vado a ricordo)
db400.ConnectionString = "Provider=IBMDA400;Data Source=<ip>;User
 Id=<user>;Password=<pass>;"
 db400.Open
db400.Execute "DELETE * FROM Pippo"
db400.close
???
Aggiusta tu il codice!

 Aggiusta tu il codice!
No wodka, purtroppo devo ciclare prima tutti i record in un certo range, ma 
i record che ciclo non sono tutti i record della tabella... quindi non mi � 
possibile fare una delete *... praticamente, il mio codice prima fa una 
select * e poi cerca dei "segnali" di inizio e fine e io elaboro i record 
che sono tra inizio e fine. Motivo per cui sarebbe importante eliminarli 
subito dopo averli elaborati... Se pero' come ha detto Andrea la delete 
mentre ciclo puo' creare problemi (effettivamente � come toglierli la terra 
da sotto i piedi) provo a rompere un po' i maroni e farmi inserire un 
contatore.
Grazie a tutti
 


zac
...Mi sfugge qualcosa!!!
se usi un database e ti aspetti un record e lo recuperi con un po di
sql...tutti i db del mondo funzionano in maniera simile!
se hai un record...avrai dei campi....se cerchi qualcosa nei
campi...ci sono gli operatori SQL e in più funzioni SPECIFICHE per il
tuo dialetto SQL.
Trattandosi di un mainframe come un as400 non credo sia impossibile
programmare una query o una stored (o l'equivalente) per recuperare i
dati che vuoi!
in pratica hai le SOLITE 2 strade:
a) Far lavorare il server e usare ADO e quant'altro solo come client.
Quindi sposta li con stored trigger e  quant'altro la logica business
(gran parte)
b) Usare il DB solo come stoccaggio dati
Comunque tu la metta è un vecchio problema che si presenta con access
figurati con sistemi più "grossi"
...è stupido perchè assai inefficiente, farsi dare tutta (TUTTA) la
tabella e ciclarsela record per record alla ricerca di qualcosa.
Se dovessi fare una ricerca di chi a Milano ha un cane ed un gatto e
il nonno a carico...secondo te mi faccio dare la lista di tutti gli
abitanti di Milano dal Database e poi mi metto a ciclare con un mega-
loop ???
E se fosse Parigi?
...o Tokio? ...mi basterà una settimana? o il pc va in crash prima per
esaurimento stack di memoria?
:-o
Ti rendi conto che c'è qualcosa di sbagliato nell'approccio "brute
force" no?
Saluti
P.s.
Delete From Anagrafica
Where (animale="gatto" Or animale="cane") AND Nonno=True
funziona anche senza chiave primaria!
Non è quello il punto!

 force" no?
hai piu' che ragione... purtroppo credo che quello sia il metodo di 
programmazione in rpg... da quant'ho capito loro agganciano un file 
(tabella) o un logico e se lo scorrono in non so che modo per questo il file 
al quale mi collego ha quel formato cosi' mer**so :-) Cmq ho trovato un bel 
campettino data/ora con tanto di secondi e sto pensando di usare quella per 
riconoscere i record :)
Grazie 1000


 ha scritto nel messaggionews:5d092711-beb6-46cd...@k25g2000vbl.googlegroups.com...
mah...io credo che avresti fatto prima  a dirci che vuoi fare! Tanto
non ci devi mica dare i dati...
Si è capito che vuoi filtrare i dati di una tabella....
la domanda è
c'hai un tracciato record? ...immagino di si!
Non puoi usarlo per filtrare i tuoi dati?
credo di si....le funzioni dovrebbe avercele
http://www.broculos.net/tutorials/as_400_chapter_4_sql/20071026/en
Tu poi mi parli di file.....
ma se ti colleghi via ado...tu non hai più un file ma la
rappresentazione di una serie di dati chiamata recordset...tu hai a
che fare con quelli adesso!
Che ce ne frega di scorrere il file?
Ci pensa il provider ADO a farlo!
...altra cosa.....
hai controllato se il provider ADO di IBM per as400 adesso implementa
la cancellazione???
Io cercando con google ho scoperto che nel 2005 non implementava il
metodo delete...e dovevi andare di SQL!!!
tiè:
http://forums.systeminetwork.com/isnetforums/showthread.php?t=41778
Può darsi che le cose siano cambiate....non credo ma può darsi.....
A MAGGIOR RAGIONE SE NON SUPPORTA rs.delete:
se devi cancellare 100 record a colpi di singola istruzione sql ....è
una follia pura!!!
pensa se sono di più!
Ti obbliga la logica a costruirti una query di delete...o una stored
(o come cavolo si chiama)
Saluti