Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    VB6, ASP, ADO e XML: problema con modifiche MDB sul server.

    Ciao a tutti,
    posto qui il mio problema che è legato a diversi linguaggi e tecnologie... spero che qualcuno possa aiutarmi !

    Sto sviluppando un sistema per la gestione di vendite online.
    Il progetto prevede un sito web dal quale i clienti possono effettuare i propri ordini
    ed un client, con cui l'azienda che si occupa delle vendite, può gestire questi ordini e i
    dati di tutti i clienti.

    Il sito, completamente sviluppato con ASP, è già funzionante: dati dei clienti e ordini
    vengono memorizzati su un DB Access (ovviamente sul server), mentre il client lo sto scrivendo
    in VB6 con il supporto di ADO 2.7.

    Sul server ho aggiunto due pagine ASP per consentire a client e server di scambiarsi i dati
    del DB sotto forma di documenti XML.

    In un punto in particolare il mio programma deve richiede al server un recordset con
    l'informazione dello stato (spedito = 2; non spedito = 1) di un dato ordine:

    ' Richiede al server lo stato dell'ordine selezionato
    Set REC = New ADODB.Recordset
    REC.CursorType = adOpenDynamic
    REC.LockType = adLockOptimistic

    ' qui faccio REC.Open passando l'URL della pagina ASP con la richiesta giusta...
    ' ...

    Fino a qui è tutto Ok, tralascio il codice della pagina ASP in questione in quanto il recordset
    viene popolato nel modo giusto: un'unico record con il solo campo "State".
    Fatto ciò, modifico il valore del campo State:

    REC.Fields("State") = 2 ' contrassegno come spedito
    REC.Update ' non ce ne sarebbe bisogno ma aggiorno comunque...

    Il problema ce l'ho quando il client deve reinviare il recordset al server.
    Per fare ciò ho utilizzo la libreria "Microsoft XML v3.0". In particolare un'oggetto
    "MSXML2.ServerXMLHTTP30" per effettuare la connessione, ed un'oggetto
    "MSXML2.DOMDocument30" per rappresentare i dati in un documento XML:

    ' dopo aver modificato il valore del campo State...
    Const HTTPBaseAddress = "http://localhost/librionline/"
    Dim objXMLHTTP As New MSXML2.ServerXMLHTTP30
    Dim objXMLData As New MSXML2.DOMDocument30

    REC.Save objXMLData, adPersistXML ' Salva le modifiche su un'oggetto documento XML

    ' Apre la connessione HTTP
    objXMLHTTP.Open "POST", HTTPBaseAddress & "UpdateState.asp", False
    objXMLHTTP.send objXMLData ' invia il documento XML
    MsgBox objXMLHTTP.responseText ' mostra il testo reinviato al client
    REC.Close

    Set REC = Nothing

    Set objXMLHTTP = Nothing
    Set objXMLData = Nothing

    Con questo codice salvo il recordset (già modificato) in un documento XML e, grazie all'oggetto
    ServerXMLHTTP30 con cui ho aperto una connessione con la pagina "UpdateState.asp", invio il
    documento al server. Ecco il codice della pagina ASP:

    <%
    Const adOpenDynamic = 2
    Const adLockOptimistic = 3
    Const adUseClient = 3

    Set REC = Server.CreateObject("ADODB.Recordset")
    REC.CursorType = adOpenDynamic
    REC.LockType = adLockOptimistic
    REC.CursorLocation = adUseClient
    REC.Open Request ' apre recordset da documento XML
    REC.ActiveConnection = "Driver=Microsoft Access Driver (*.mdb);DBQ=" & Server.MapPath("DB/BooksOnLine.mdb")

    On Error Resume Next
    REC.Update

    If Err <> 0 Then
    Response.Write "Errore nell'aggiornamento dei dati."
    Err.Clear
    Else
    Response.Write "Aggiornamento riuscito !"
    End If

    REC.Close
    Set REC = Nothing
    %>

    Il recordset viene popolato con i dati del documento XML ricevuto dal client.
    L'istruzione REC.Update dovrebbe apportare le modifiche al DB...
    DOVREBBE, in realtà non lo fa...
    Penso che il problema stia proprio in questa pagina: prima di chiudere il recordset ho aggiunto
    questa istruzione:

    <%
    REC.Save Server.MapPath("ADO.xml"), 1
    %>

    con cui salvo il recordset in un documento XML sul server.
    In questo documento è possibile vedere le modifiche al campo State (che memorizza 2).

    Tra l'altro, la MsgBox del codice sul client, mostra sempre il messaggio "Aggiornamento riuscito !";
    questo mi fa capire che sul server non si è verificato alcun errore.

    Perchè queste modifiche non vengono apportate anche al DB ???
    Spero che qualcuno mi dia una mano.

    Intanto ciao
    Simo

  2. #2
    dal momento che il problema risiede nella parte asp ti sposto li

    p.s.
    : se usi i tag code il codice sarà più leggibile
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  3. #3

  4. #4
    Utente di HTML.it L'avatar di kluster
    Registrato dal
    Jul 2003
    Messaggi
    1,288
    hai provato con ResponseXml invece di Response.text?

    puoi provare ad aggirare l'ostacolo loopandolo in un altro recordset e un updateBatch

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.