Visualizzazione dei risultati da 1 a 10 su 19

Hybrid View

  1. #1
    Non sapendo (per il momento) come aggiungere un indice ad un recordset disconnesso ho provato a cancellare i 3 indici della tabella (che quindi non ha chiave primaria) senza però riuscire ad ottenere un risultato positivo.
    Nulla di fatto quindi; il suggerimento era comunque interessante.
    Grazie

  2. #2
    Quote Originariamente inviata da giustavalla Visualizza il messaggio
    Non sapendo (per il momento) come aggiungere un indice ad un recordset disconnesso ho provato a cancellare i 3 indici della tabella (che quindi non ha chiave primaria) senza però riuscire ad ottenere un risultato positivo.
    Nulla di fatto quindi; il suggerimento era comunque interessante.
    Grazie
    ...credo proprio che senza chiave primaria la situazione non migliori .

    Non ho il vb6 a disposizione per provare ... comunque , anche senza scomodare MDSN o google, potresti fare questa prova;

    - crei una tabella con la pk sia in un db locale che quello remoto
    -leggi la tabella dal db locale (quindi recordset connesso) avendo cura di includere nella select anche la PK
    - disconnetti il recordset ( set activeconnection=nothing)
    ed a questo punto potresti guardarti anche la proprietà attibutes del filed corrispondente alla pk

    ... e continui spedendo il recorset alla pagina asp come già facevi

    HTH

  3. #3
    Ho scomodato, oh se l'ho scomodato, Google ! Ma forse non ho saputo cercare bene.
    Per semplificare le cose ho utilizzato una tabella con due campi (ID e Nome) e chiave primaria ID. Stesso errore.
    Non ho però capito due cose :
    - fai riferimento ad un disconnessione
    - fai riferimento ad un SELECT; io non utilizzo questa istruzione.
    Qui sotto riporto il contenuto del file XML creato
    <xml xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
    - <s:Schema id="RowsetSchema">
    - <s:ElementType name="row" content="eltOnly" rs:updatable="true">
    - <s:AttributeType name="ID" rs:number="1" rs:write="true">
    <s:datatype dt:type="int" dt:maxLength="4" rsrecision="0" rs:fixedlength="true" rs:maybenull="false" />
    </s:AttributeType>
    - <s:AttributeType name="Nome" rs:number="2" rs:nullable="true" rs:maydefer="true" rs:write="true" rs:writeunknown="true">
    <s:datatype dt:type="string" dt:maxLength="50" rsrecision="0" />
    </s:AttributeType>
    <s:extends type="rs:rowbase" />
    </s:ElementType>
    </s:Schema>
    - <rs:data>
    - <rs:insert>
    <z:row ID="2" Nome="RECORD AGGIUNTO AUTOMATIC" />
    </rs:insert>
    </rs:data>
    </xml>
    Ricapitolando
    codice:
     Dim rsD As ADODB.Recordset
     Set rsD = New ADODB.Recordset
     If rsD.State = adStateOpen Then rsD.Close
     Set rsD.ActiveConnection = Nothing 
     rsD.Fields.Append "ID", 3, 4, adFldKeyColumn
     rsD.Fields.Append "Nome", 202, 50, 106
     rsD.Open
     rsD.AddNew
     rsD("ID") = IDEff
     rsD("Nome") = "RECORD AGGIUNTO AUTOMATIC"
     rsD.Save stm, adPersistXML
     stm.SaveToFile FileRemoto, adSaveCreateOverWrite ' debug
      xml.Open "POST", WebHost & "UpdateMioTaccuino.asp", False
     xml.send stm.ReadText
     If xml.responseText <> "" Then
             MsgBox Right(xml.responseText, Len(xml.responseText) - InStr(xml.responseText, vbCrLf) - 1), vbCritical, Left(xml.responseText, InStr(xml.responseText, vbCrLf) - 1)
     End If
    Purtroppo non so se l'errore avviene lato VB o lato ASP. Capire questa cosa sarebbe già un passo notevole.
    Ultima modifica di giustavalla; 08-02-2014 a 11:10

  4. #4
    Quote Originariamente inviata da giustavalla Visualizza il messaggio
    ...
    Non ho però capito due cose :
    - fai riferimento ad un disconnessione
    - fai riferimento ad un SELECT; io non utilizzo questa istruzione.
    questo è l'xml che mi genera leggendo i dati da una tabella con una pk di un db access

    ...nota che ci sono rs:basetable , rs:basecolumn e rs:keycolumn="true" che mancano nel tuo ...


    codice:
    - <xml xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
    - <s:Schema id="RowsetSchema">
    - <s:ElementType name="row" content="eltOnly" rs:updatable="true">
    - <s:AttributeType name="K1" rs:number="1" rs:nullable="true" rs:maydefer="true" rs:writeunknown="true" rs:basetable="T1" rs:basecolumn="K1" rs:keycolumn="true">
      <s:datatype dt:type="int" dt:maxLength="4" rs:precision="10" rs:fixedlength="true" /> 
      </s:AttributeType>
    - <s:AttributeType name="F2" rs:number="2" rs:nullable="true" rs:maydefer="true" rs:writeunknown="true" rs:basetable="T1" rs:basecolumn="F2">
      <s:datatype dt:type="int" dt:maxLength="4" rs:precision="10" rs:fixedlength="true" /> 
      </s:AttributeType>
      <s:extends type="rs:rowbase" /> 
      </s:ElementType>
      </s:Schema>
    - <rs:data>
      <z:row K1="0" F2="100" /> 
      </rs:data>
      </xml>
    questo il codice usato :
    codice:
      Dim rs1 As New Recordset
      Dim cn As New Connection
      
      cn.CursorLocation = adUseClient
    
    
      cn.Open "FILE NAME=c:\temp\FileUDL.udl"
      
      On Error Resume Next
      cn.Execute "Drop Table T1"
         cn.Execute "CREATE TABLE T1 (K1 Int PRIMARY KEY, F2 Int)"
      On Error GoTo 0
      
      cn.Execute "INSERT INTO T1 VALUES(0, 100)"
      
      rs1.Open "Select K1, F2 From T1", cn, adOpenKeyset, adLockOptimistic
      
      If Dir("c:\temp\Persist.xml") <> "" Then Kill "c:\temp\Persist.xml"
      rs1.Save "c:\temp\Persist.xml", adPersistXML
    EDIT

    aggiungo anche che questo codice mi funziona in locale (non ho tempo di provare con la pagina asp ora)
    codice:
      rs2.Open "c:\temp\Persist.xml", cn, adOpenKeyset, adLockBatchOptimistic, adCmdFile
    
    
      rs2.AddNew
      rs2("K1") = 1
      rs2("F2") = "200"
      rs2.UpdateBatch
    Ultima modifica di sspintux; 08-02-2014 a 12:46 Motivo: aggiunta

  5. #5
    In locale funziona ma sul web, interagendo con la pagina ASP ... no
    Vorrei chiarire che in locale (ossia sul PC) non c'è alcun database. O meglio c'è un recordset disconnesso (ammesso che sia necessario).
    C'è viceversa un database MDB sul web ed è proprio con lui che la pagina ASP ed il codice VB6 dovrebbe interagire.
    Grazie delle ulteriori informazioni, ma per il momento ... le idee sono poche e ben confuse.
    Ultima modifica di giustavalla; 08-02-2014 a 15:35

  6. #6
    Quote Originariamente inviata da giustavalla Visualizza il messaggio
    0
    Vorrei chiarire che in locale (ossia sul PC) non c'è alcun database. O meglio c'è un recordset disconnesso (ammesso che sia necessario).
    ... allora non credo ci sia la possibilità di usare l'updatebatch ( a meno di costruirsi a mano l'xml come te l'ho mostrato)
    perchè le properties di un adodb.field sono impostate dal provider di dati e non sono modificabili;

    ma ciò non toglie che lato asp possa implementare tu stesso "a manina" quello che farebbe l'updatebatch ...

  7. #7
    Quanto mi dici va al di là delle mie capacità. Costruire a mano un XML sarebbe anche possibile ma, con il fatto che non si sa se gli errori sono dal lato AS o VB6, la vedo assai dura.
    Bisognerebbe avere un esempio di XML funzionante; è su questa linea che intendo muovermi adesso.
    Il mio post iniziava con un "nel web suno numerosi gli esempi di aggiornamento di un recordset tramite VB6 e ASP". Possibile che non ci sia un esempio di tale tecnica, con un AddNEw ?
    Grazie ancora.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.