Veniamo
ora ad una parte "calda" di questo tutorial. Quanto
appreso sopra vi sarà di grande aiuto essendo i comandi
SQL sempre e naturalmente indispensabili per l'interrogazione
del database e una conoscenza di ASP (Active Server Page).
Il sistema che useremo è il seguente.
Abbiamo due applicazioni:
» Il programma client che andrà installato in
locale e sarà scritto in Visual Basic.
» Una pagina ASP che ha il compito di svolgere le operazioni
sul server e restituire il risultato all'applicazione client.
Per ogni operazione necessaria è consigliabile creare
una pagina ASP diversa in modo da non complicarsi la vita
nello scrivere una pagina ASP universale (ciò non vieta
che sarebbe utile farlo:)
Nel tutorial sono presenti due pagine ASP una per il SELECT
ed una per l'UPDATE.
Fatta questa breve introduzione vi illustro ora in 10 passi
come creare l'applicazione di esempio:
1) Create il form in Visual Basic.
2) Nei riferimenti aggiungete:
a) Microsoft ActiveX Data Object 2,5 library.
b) Microsoft XML, version 2.
3)
Nei componenti inserite:
a) Microsoft DataGrid Control 6 (SP5)(OLEDB).
4) Inserite una DataGrid (DataGrid1) e due bottoni (Command1
e Command2).
5)
Copiate il codice qui di seguito nel form.
Option
Explicit
Private rs As
ADODB.Recordset
'qui inserite la path del vostro sito
Private Const PathDB = "http://localhost/"
'*****
Private
Sub Command1_Click()
Set rs = New
ADODB.Recordset
With rs
If .State = adStateOpen Then
.Close
.CursorLocation = adUseClient
'invia una variabile col nome della
tabella da interrogare alla pagina asp
.Open PathDB & "interroga.asp?Tabella=prova"
'*****
End With
If rs.Fields(0).Name = "Type"
And rs.Fields(0).Value =
"##Error##" Then
'se viene segnalato un errore lo segnala,
altrimenti....
MsgBox rs("Description") & vbCrLf &
"Codice: " & rs("Code"), vbCritical,
_ rs("Source")
Else
'...setta il recordset caricato come
la fonte di dati del programma
Set DataGrid1.DataSource
= rs
End If
End Sub
Private
Sub Command2_Click()
'aggiorna il database
Dim stm As
ADODB.Stream
Dim xml As
MSXML.XMLHTTPRequest
Set xml = New
MSXML.XMLHTTPRequest
Set stm = New
ADODB.Stream
rs.Save stm, adPersistXML
'apre la pagina asp
xml.Open "POST", PathDB & "modifica.asp",
False
'invia le modifiche alla pagina asp
xml.send
stm.ReadText
'controlla se l'invio è andato
a buon fine
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 Command1_Click
Command1.Caption = "SELECT"
Command2.Caption = "UPDATE"
End Sub
Private Sub
Form_QueryUnload(Cancel As Integer,
UnloadMode As Integer)
'quando il form viene chiuso chiude
il recordset
Set rs = Nothing
End Sub |
6)
Modificate dove richiesto nei commenti (ci sono 5 asterischi
(*) alla destra delle righe da modificare.
7) Create un nuovo documento col notepad e inserite il codice
qui di seguito questo codice va modificato solo dove è
presente l'asterisco, Chiamate il documento aggiungi.asp.
<!--#include
File="adovbs.inc"-->
<%
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")
'apre la connessione al database
* qui dovete specificare dove si trova il db.
conn.ConnectionString = "driver={Microsoft Access
Driver (*.mdb)};dbq=" & Server.MapPath("nomeDB.mdb")
conn.CursorLocation = adUseClient
conn.Open
'aggiorna il database
rs.CursorLocation = adUseClient
rs.Open Request
rs.ActiveConnection = conn
rs.UpdateBatch
'gestisce gli eventuali errori
If Err Then
Response.ContentType = "text/xml"
Response.Write Err.Source & vbCrLf & Err.Description
& vbCrLf & "Codice: " & Err.Number
End If
'chiude la connessione
stm.Close
rs.Close
Set stm = Nothing
Set rs = Nothing%>
|
8)
Create un nuovo documento col notepad e inserite il codice
qui di seguito questo codice va modificato solo dove è
presente l'asterisco. Chiamate il documento modifica.asp.
<!--#include
File="adovbs.inc"-->
<%
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")
'apre la connessione al al database
* qui dovete specificare dove si trova il db.
conn.ConnectionString = "driver={Microsoft Access
Driver (*.mdb)};dbq=" & _ Server.MapPath("nomeDB.mdb")
conn.CursorLocation = adUseClient
conn.Open
rs.CursorLocation = adUseClient
'effettua la query sulla tabella
specificata nel programma VB
rs.Open "SELECT * FROM " & Request.QueryString("Tabella"),
conn , adOpenkeyset, adLockBatchOptimistic
If Err Then
Set rs = Server.CreateObject("ADODB.Recordset")
If .State = adStateOpen Then rs.Close
rs.Fields.Append "Type", adVarChar, 9
rs.Fields.Append "Source", adVarChar, 50
rs.Fields.Append "Description", adVarChar,
255
rs.Fields.Append "Code", adInteger
rs.Open
rs.AddNew
rs.Fields("Type") = "##Error##"
rs.Fields("Source")= Err.Source
rs.Fields("Description") = Err.Description
rs.Fields("Code") = Err.Number rs.BatchUpdate
End If
rs.Save stm, adPersistXML
'invia la risposta
Response.ContentType = "text/xml"
Response.Write stm.ReadText
'chiude la connessione al database
stm.Close
rs.Close
Set stm = Nothing
Set rs = Nothing %>
|
<!--#include
File="adovbs.inc"-->
<%
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")
'apre la connessione al database
conn.ConnectionString = "driver={Microsoft Access
Driver (*.mdb)};dbq="& Server.MapPath("db2.mdb")
conn.CursorLocation = adUseClient
conn.Open
rs.CursorLocation = adUseClient
'effettua la query sulla tabella
specificata nel programma VB
rs.Open "SELECT (*) FROM " & Request.QueryString("Tabella"),
conn , adOpenkeyset, adLockBatchOptimistic
If Err Then
Set rs = Server.CreateObject("ADODB.Recordset")
If .State = adStateOpen Then rs.Close
rs.Fields.Append "Type", adVarChar, 9
rs.Fields.Append "Source", adVarChar, 50
rs.Fields.Append "Description", adVarChar,
255
rs.Fields.Append "Code", adInteger
rs.Open rs.AddNew rs.Fields("Type") = "##Error##"
rs.Fields("Source") = Err.Source
rs.Fields("Description") = Err.Description
rs.Fields("Code") = Err.Number
rs.BatchUpdate
End If
rs.Save stm, adPersistXML
'invia la risposta
Response.ContentType = "text/xml"
Response.Write stm.ReadText
'chiude la connessione al database
stm.Close
rs.Close
Set stm = Nothing
Set rs = Nothing %>
|
9)
Create un nuovo documento col notepad e inserite il codice
scaricabile qui. Questo codice non
va modificato. Rinominate il documento adovbs.txt in adovbs.inc.
10)
Fate l'upload delle due pagine asp dove si trova il database.
Ora
siete pronti ad eseguire il form che avete scritto prima in
Visual Basic.
|