Newsgroup: it.comp.lang.visual-basic
Titolo: UpdateBatch

Ho cercato su google ma non ho trovato niente .....
Ho creato una piccola applicaxione VB che legge lo stream XML fornito da una
pagina ASP. Il recordset che ottengo lo associo a vari campi di una form
.... faccio le mie modifiche dopo di che ripasso lo stream XML ad ASP per
effettuare l'aggiornamento.
Tutto questo funziona alla perfezione fintanto non vado a fare il doppio
passaggio rs->form->rs di un campo che contiene un orario ....
mi restituisce l'errore .....
Microsoft Cursor Engine
Impossibile individuare la riga specificata per l'aggiornamento.  E'
possibile che alcuni valori siano stati modificati dopo l'ultima operazione
di lettura.
Codice: -
2147217864
Ho cercato su la KB di MS .... ma niente .... se qualcuno potesse aiutarmi
gentilmente .... di seguito posto il codice del client VB e della pagina
ASP.
Client VB
Dim stm As ADODB.Stream
Dim xml As MSXML.XMLHTTPRequest
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
Set xml = New MSXML.XMLHTTPRequest
Set stm = New ADODB.Stream
  rsD("log_referer").Value = Refer.Text
  rsD("log_data").Value = Data.Text
  rsD("log_ora").Value = Ora.Text
  rsD("log_ip").Value = IP.Text
Set rs = rsD
rs.Save stm, adPersistXML
xml.Open "POST", "
http://localhost/miosito/Write.asp
?", False
xml.Send stm.ReadText
Pagina ASP Write.asp
  on error resume next
  Set rs = Server.CreateObject("ADODB.Recordset")
  Set stm = Server.CreateObject("ADODB.Stream")
  Set conn = Server.CreateObject("ADODB.Connection")
  conn.ConnectionString = connDB
  conn.CursorLocation = adUseClient
  conn.Open
  With rs
    .CursorLocation = adUseClient
    .CursorType = adOpenKeyset
    .LockType =  adLockBatchOptimistic
    .Open Request
    .ActiveConnection = conn
    .UpdateBatch
  End With
  If Err Then
    Response.ContentType = "text/xml"
    Response.Write Err.Source & vbCrLf & Err.Description & vbCrLf & "Codice:
" & Err.Number
  End If
Grazie a tutti.
Sanghino.

 ASP.
Per la precisione su KB c'era indicato di togliere tutti i valori di default
per i campi numerici nel mio db access (in realtà non ne avevo neanche
uno!!!)
Comunque ho fatto una piccola prova .... ho scritto il file xml invece che
nello stream su di un file e questo è quello che ne risultava:
[cut]
<rs:data>
 <rs:update>
  <rs:original>
   <z:row log_ident='1' log_ip='80.104.165.180'
log_data='2003-05-16T00:00:00' log_ora='1899-12-30T01:32:15'
     log_referer='sdafsdfs' log_agent='Mozilla/4.0 (compatible; MSIE 6.0;
Windows NT 5.0; Virgilio6pc; .NET CLR 1.0.3705)'/>
  </rs:original>
  <z:row log_ip='80.104.165.180' log_data='2003-05-16T00:00:00'
log_ora='1899-12-30T01:32:15' log_referer='xxxxxxxxxxxxxxxxxxxxx'/>
 </rs:update>
</rs:data>
[cut]
come si nota nel campo log_ora c'è una data strana .... per inciso nel file
access il campo è definito come 'Data/ora' usando il formato 'ora estesa'
cambiando il formato del campo in access in 'Data generica' l'aggiornamento
funziona alla meraviglia ....
Io non so darmi comunque una spiegazione di perchè accada ciò .....
Sanghino.

     .CursorType = adOpenKeyset
Questo tipo di cursore (che mi sento di sconsigliare, come il dynamic,
perchè, lato server, farebbe muovere il recordset in funzione delle
modifiche fatte da altri) di fatto verrà trasformato in Static, visto il
lato client...

 Io non so darmi comunque una spiegazione di perchè accada ciò .....
Giusto per curiosità, rimetti com'era e fai la prova con l'indice che ti ho
consigliato nell'altro post.
PS: Un'altra ipotesi per quell'errore (se non ricordo male e maledicendo
ancora una volta la chiarezza degli errori Ms) può essere dovuta al fatto
che tenti di mettere in un campo un numero di caratteri maggiori di quelli
previsti per il campo stesso

 previsti per il campo stesso
Ti rispondo qui ad entrambi i post ..... l'indice in realtà esiste già ....
L'ipotesi invece che fai qui sopra mi sembra più che plausibile .... infatti
sul file access il campo ha un formato per accogliero solo l'ora mentre lo
stream xml mi ci appiccica davanti anche la data .... quello che non trovo
adesso è il modo per toglierla quella data .... o forse neanche c'è .....
Ti ringrazio per l'interesse che hai posto al mio quesito ..... se faccio
ulteriori passi in avanti nel capire lo posterò ....
Ciao.
Sanghino.