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

    [VB6][ADO][ASP][db remoto] problema risolto definitivamente!!!

    se avete mai affrontato tale problema, se vi siete invischiati adesso, se avete letto i miei vecchi DISPERATI 3D allora ecco ciò che vi serve(r)

    problema:

    database su internet in remoto
    programma in locale in VB che deve accedere al DB remoto e poterlo modificare

    soluzione:

    1. soluzione composita
    utilizzando ADO, ASP e XML per la gestione del database, e visualizzando il tutto in VB

    2. soluzione DLL
    utilizzando una dll sul server che comunica con il VB in locale (soluzione attuabile solo se il server è TUO, poichè spesso non è consentito registrare componenti sui server...)

    suggerisco per la maggior parte delle persone (su server free o a pagamento) la soluzione 1, comoda, semplice e veloce

    la seconda soluzione è da preferirsi per "pulizia" e "performances", però per contro necessita della registrazione della DLL sul server, operazione attuabile solo se si hanno i poteri di Amministratore

    --------------------------------------------------------------------

    ecco quà entrambe le soluzioni con esempi tutto in italiano!
    (scovate da me... alla fine dopo lunghe peripezie!!!)

    http://www.morenosoft.com/msvbsite/p...a&type=4&ID=89

    --------------------------------------------------------------------

    sperando sia utile a tante persone che hanno avuto il mio stesso problema...

    ciao!
    san imente saluta

    * http://simonecingano.it *

  2. #2
    Ciao,scusa se rompo ma ho scaricato l'esempio relativo all' articolo da te postato, e a me funziona in parte.Ho copiato le pagine asp sotto la directory c:\inetpub\wwwroot\dbremoti assieme al database, ho sistemato l'indirizzo nell'applicazione client da http://localhost a http://localhost/dbremoti e ho avviato l'applicazione : in fase di lettura tutto OK (mi riempie il datagrid) ma quando cerco di aggiornare mi da errore 3704 (l'operazione non è consentita se l'oggetto è chiuso).Potresti darmi una mano??

  3. #3
    premetto che non è mio quell'esempio
    ma che ne capisco abbastanza da poterti aiutare...

    vediamo però bene di capire qual'è il problema

    quando carichi allright
    quando salvi problemi...

    dimmi esattamente la riga che ti da problemi...

    spero tu non abbia modificato ne le parti ASP, ne le VB
    altrimenti torna all'inizio, e cerca di farlo fungere.
    se non funge dimmi dove non funge (riga...)

    poichè è sempre meglio prima fare funzionare la base
    poi si operano le modifiche del caso (come io stesso
    ho fatto, aggiungendo parametri di Queraggio per la
    selezione, e una password sul db)

    perchè mi risulta strano tutto questo

    fammi sapere...
    san imente saluta

    * http://simonecingano.it *

  4. #4
    Ti posto il codice del client:
    "
    Option Explicit

    Private rs As ADODB.Recordset

    'Modificate la riga seguente con l'URL delle pagine ASP
    Private Const RemotePath = "http://localhost/dbremoti/"
    Private Sub cmdRequery_Click()

    Set rs = New ADODB.Recordset
    With rs
    If .State = adStateOpen Then .Close
    .CursorLocation = adUseClient
    .Open RemotePath & "query.asp?TableName=Address"
    End With

    If rs.Fields(0).Name = "Type" And rs.Fields(0).Value = "##Error##" Then
    MsgBox rs("Description") & vbCrLf & "Codice: " & rs("Code"), vbCritical, rs("Source")
    Else
    Set DataGrid1.DataSource = rs
    End If
    'rs.Close
    End Sub

    Private Sub cmdUpdate_Click()

    Dim stm As ADODB.Stream
    Dim xml As MSXML.XMLHTTPRequest

    Set xml = New MSXML.XMLHTTPRequest
    Set stm = New ADODB.Stream

    rs.Save stm, adPersistXML
    xml.Open "POST", RemotePath & "Update.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 Sub

    Private Sub Form_Load()

    Call cmdRequery_Click

    End Sub

    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)

    Set rs = Nothing

    End Sub
    "
    ... e quelli dele pagine ASP

    "query.asp"


    <%
    Dim rs
    Dim stm
    Dim conn

    On Error Resume Next

    Set rs = Server.CreateObject("ADODB.Recordset")
    Set stm = Server.CreateObject("ADODB.Stream")
    Set conn = Server.CreateObject("ADODB.Connection")

    conn.ConnectionString = "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("example.mdb")
    conn.CursorLocation = adUseClient
    conn.Open

    rs.CursorLocation = adUseClient
    rs.Open "SELECT * FROM " & Request.QueryString("TableName"), conn , adOpenkeyset, adLockBatchOptimistic

    If Err Then
    Set rs = Server.CreateObject("ADODB.Recordset")
    With rs
    If .State = adStateOpen Then .Close
    .Fields.Append "Type", adVarChar, 9
    .Fields.Append "Source", adVarChar, 50
    .Fields.Append "Description", adVarChar, 255
    .Fields.Append "Code", adInteger
    .Open
    .AddNew
    .Fields("Type") = "##Error##"
    .Fields("Source")= Err.Source
    .Fields("Description") = Err.Description
    .Fields("Code") = Err.Number
    .BatchUpdate
    End With
    End If

    rs.Save stm, adPersistXML

    Response.ContentType = "text/xml"
    Response.Write stm.ReadText

    stm.Close
    rs.Close
    Set stm = Nothing
    Set rs = Nothing
    %>

    e "update.asp"


    <%

    Dim rs
    Dim stm
    Dim conn

    On Error Resume Next

    Set rs = Server.CreateObject("ADODB.Recordset")
    Set stm = Server.CreateObject("ADODB.Stream")
    Set conn = Server.CreateObject("ADODB.Connection")

    conn.ConnectionString = "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("example.mdb")
    conn.CursorLocation = adUseClient
    conn.Open

    With rs
    .CursorLocation = adUseClient
    .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

    stm.Close
    rs.Close
    Set stm = Nothing
    Set rs = Nothing
    %>



    L'errore si genera nella fase client nella riga evidenziata in rosso .
    Io non ho cambiato niente solo la posizione delle pagine e del DB come ho scritto prima... spero ti possa aiutare a darmi una mano....
    P.S.: anche "adovbs.inc" è sotto la cartella c:\inetpub\wwwroot\dbremoti .

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2000
    Messaggi
    5

    Database remoto, HELP

    Complimenti per il tuo articolo.
    Io ho il seguente problema:
    Piu Pc (ognuno con un suo database Access)devono trasferire i loro dati ad un DATABASE Centrale . Questi Pc si collegano via modem in Internet e contattano Il DATABASE Centrale.

    Mi sapresti indicare con quale STRINGA di connessione ADO?
    Ho provato con questa ma non vaICE errore nel server web.

    conn.open "Provider=MS Remote;" &_
    "Remote Server=http://127.0.0.1;" &_
    "Remote Provider=Microsoft.Jet.OLEDB.4.0;" &_
    "Data Source=d:\myweb\db.mdb;"


    GRAZIE TANTO...MAX

  6. #6

    Re: Database remoto, HELP

    Originariamente inviato da macly
    Complimenti per il tuo articolo.
    Io ho il seguente problema:.....
    Prova cosi' :
    conDB.Open ("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " & server.mappath("db.mdb"))
    e spero di non sbagliarmi.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.