Italian Piccola guida connessione Ms Access remoto e locale

FabioCrank

Member
Licensed User
Longtime User
Salve un saluto a tutto il forum Italiano…

Sono un appassionato di Visual Basic 6 da tantissimi anni…..

e sto cercando di imparare anche questo nuovo Basic4Android …sarà per la parola Basic che ritorna…

Volevo fare un piccola guida sulla Connessione al Database Microsoft Access in locale e in remoto, che spero possa essere utile a tanti che iniziano a lavorare con Basic4Android.

Ovviamente per molti di voi che conoscete bene il B4a, tutto questo forse sarà inutile e sicuramente perfezionabile, ma volevo comunque riunire un po’ tutto quello che ho provato e testato.

In questa mia APP ho eseguito la connessione al DB MS Access sia in Locale che in Remoto.

Per fare questo ho creato prima il DB Clienti.mdb con la seguente tabella: Anagrafica

con Cliente e Citta

e poi per eseguire la connessione al DB ho creato il file: QueryMSaccess.asp

che serve per interrogare il DB e restituire alla mia APP B4a un file stringa Json da leggere e formattare in una listview o altro…

Nel server sia in Locale che in Remoto in una directory predefinita quindi ci saranno i seguenti file:

Clienti.mdb in una directory

E tutti questi file nello stesso percorso

QueryMSaccess.asp
JSON.asp
JSON_UTIL.asp

Codice B4a

B4X:
Sub Process_Globals
Dim hc As HttpClient
End Sub

Sub Globals
Dim Button1 As Button
    Dim Button2 As Button
    Dim Button3 As Button
    Dim ET1 As EditText
    Dim ListView1 As ListView
    Dim Button4 As Button
    Dim ET2 As EditText
End Sub

Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("frm1")
    hc.Initialize("hc")
        Dim req As HttpRequest
        Dim web As String
        Dim query As String

‘ seleziona la query nel file .ASP
    query=1
' prova connessione in locale (inserire indirizzo IP del PC in locale)
    web="http://192.168.1.6/b4a/QueryMSAccess.asp?QRY=" & query
' prova connessione in remoto
'    web="http://www.nomedominio.it/QueryMSAccess.asp?QRY=" & query

    req.InitializePost2(web, query.GetBytes("UTF8"))
    hc.Execute(req, 1)
End Sub

Sub hc_ResponseError (Response As HttpResponse, Reason As String, StatusCode As Int, TaskId As Int)
Msgbox("Errore","")
End Sub

Sub hc_ResponseSuccess (Response As HttpResponse, TaskId As Int)
    If TaskId=1 Then
        Dim res As String
        res = Response.GetString("UTF8")
        Dim parser As JSONParser
        parser.Initialize(res)

        Dim countries As List
        Dim m As Map
        Dim t1,t2 As String
        countries = parser.NextArray 'returns a list with maps
        ListView1.Clear
        For i = 0 To countries.Size - 1
            m = countries.Get(i)
        t1 = m.Get("Cliente")
            t2 = m.Get("Citta")
           ListView1.AddTwoLines (t1, t2)
              Next
        Response.Release
    End If
End Sub

Sub Button1_Click
hc.Initialize("hc")
        Dim req As HttpRequest
        Dim web As String
        Dim query As String

‘ seleziona la query nel file .ASP
    query=2
' prova connessione in locale (inserire indirizzo IP del PC in locale)
    web="http://192.168.1.6/b4a/QueryMSAccess.asp?QRY=" & query & "&PAR=verdi"
' prova connessione in remoto
'    web="http://www. nomedominio.it/QueryMSAccess.asp?QRY=" & query & "&PAR=verdi"
   
    req.InitializePost2(web, query.GetBytes("UTF8"))
hc.Execute(req, 1)
End Sub

Sub Button2_Click
    If ET1.Text<>"" Then   
        hc.Initialize("hc")
        Dim req As HttpRequest
        Dim web As String
        Dim query As String

‘ seleziona la query nel file .ASP
query=2
' prova connessione in locale (inserire indirizzo IP del PC in locale)
web="http://192.168.1.6/b4a/QueryMSAccess.asp?QRY=" & query & "&PAR=" & ET1.Text.Replace("'","''")
' prova connessione in remoto
'    web="http://www. nomedominio.it/QueryMSAccess.asp?QRY=" & query & "&PAR=" & ET1.Text.Replace("'","''")

    req.InitializePost2(web, query.GetBytes("UTF8"))
    hc.Execute(req, 1)
End If
End Sub

Sub Button3_Click
    hc.Initialize("hc")
Dim req As HttpRequest
Dim web As String
Dim query As String
‘ seleziona la query nel file .ASP
    query=1
' prova connessione in locale (inserire indirizzo IP del PC in locale)
    web="http://192.168.1.6/b4a/QueryMSAccess.asp?QRY=" & query
' prova connessione in remoto
'    web="http://www. nomedominio.it/QueryMSAccess.asp?QRY=" & query

    req.InitializePost2(web, query.GetBytes("UTF8"))
hc.Execute(req, 1)
End Sub

Sub Button4_Click
    If ET2.text<>"" Then   
        hc.Initialize("hc")
        Dim req As HttpRequest
        Dim web As String
        Dim query As String

‘ seleziona la query nel file .ASP
query=3
' prova connessione in locale (inserire indirizzo IP del PC in locale)
web="http://192.168.1.6/b4a/QueryMSAccess.asp?QRY=" & query & "&PAR=" & ET2.Text.Replace("'","''")
' prova connessione in remoto
'    web="http://www. nomedominio.it/QueryMSAccess.asp?QRY=" & query & "&PAR=" & ET2.Text.Replace("'","''")

    req.InitializePost2(web, query.GetBytes("UTF8"))
    hc.Execute(req, 1)
    End If
End Sub

Codice ASP

B4X:
<!--#include file="JSON.asp"-->
<!--#include file="JSON_UTIL.asp"-->
<script language="vbscript" runat="server">

On Error Resume Next

' Constants
const adOpenForwardOnly = 0 ' Forward only movement through records
const adOpenKeyset      = 1 ' Movement any direction

const adOpenDynamic = 2
const adOpenStatic  = 3
const adLockOptimistic = 3

Dim dbPathAndFilename
Dim ConnectionString

Dim rs
Dim QRY
Dim PAR
Dim UID
Dim PSW
Dim dbFile
Dim strsql

' ////////////////////////////////////////////////////////////
' Main
' ////////////////////////////////////////////////////////////

    ' Initialise
    OpenDatabase = False
   
‘ nome del Database
    dbFile = "Clienti.mdb"

' scelta numero query
    QRY= Request("QRY")
' scelta parametro query
    PAR= Request("PAR")

' username DB
'    UID= Request("UID")
' passowrd DB
'    PSW= Request("PSW")

' questo è il percorso del file del Database in locale
‘ va poi cambiato quando si pubblica sul server
    dbPathAndFilename = "C:\www\Clienti.mdb"

    Set Connection = Server.CreateObject("ADODB.Connection")
    Connection.ConnectionTimeout = 30
    Connection.CommandTimeout = 80

    ConnectionString = "DRIVER={Microsoft Access Driver (*.mdb)};" &_
                       "DBQ=" & dbPathAndFilename & ";DefaultDir=;" ' &_
'                       "UID=" & Username & ";" &_
'                       "PWD=" & Password & ";"
   
    Connection.Open ConnectionString
   
    OpenDatabase = True
       
    select case QRY
        case 1
            strsql = "SELECT * FROM anagrafica"
        case 2
            strsql = "SELECT * FROM anagrafica WHERE cliente ='" & PAR & "'"
        case 3
            strsql = "SELECT * FROM anagrafica WHERE citta ='" & PAR & "'"
' case etc.......... si possono aggiungere altre query
    end select

    set rs = Server.CreateObject("ADODB.RecordSet")
    rs.Open strsql , Connection, adOpenForwardOnly, adLockOptimistic

    QueryToJSON(Connection, strsql).Flush

    rs.Close
    set rs = nothing

    Connection.Close
    set Connection = nothing
   
    CheckError

' ////////////////////////////////////////////////////////////
Function CheckError()
' ////////////////////////////////////////////////////////////

' CheckError: Checks for, and reports Errors.
' Returns True if an error has occured, False otherwise
    if Err.number <> 0 then
        Response.Write "A run-time error occurred.<BR>Error Number: " &_
                           Err.number & "Error Description: " & Err.description
        CheckError = True
    Else
        CheckError = False
    End If
end Function

</script>
 
Top