Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Теоретические сведения.

 

Данная работа позволяет организовать взаимодействие с базами данных через Интернет. Смысл ее в том, что пользователь может открыть удаленный сайт и «залезть» в базу данных удаленного компьютера, разумеется, при отсутствии ограничений, устанавливаемых браузером. По мере изложения теоретического материала будем «продвигаться» в изучении VBS.

Создадим следующий сайт:

 

<HTML>

 

<H3><Font Color=White>ЛАБА VBS</Font><H3>

<HR>

 

<SCRIPT LANGUAGE="VBScript">

<!--

 

Option Explicit

Dim blnValue, strUserName, xCustomer

 

 

sub showAccess

 

Dim objacc, strConnection, strDataBase, rs,sfio

Set objacc = CreateObject("ADODB.Connection")

 

strConnection= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="

strdataBase="d:\german\JULIA_CIT_COURSE\ЛАБЫ\my.mdb"

 

objacc.Open strConnection & strDatabase

Set rs = objacc.Execute("Select * from stud")

 

 

Do until rs.EOF

sfio = rs("fio")

msgbox sfio

rs.MoveNext

Loop

 

 

end sub

 

 

-->

 

</SCRIPT>

<BODY bgcolor=0x1255AA>

<form name="frm">

<br>

<br>

<center>

<br>

<br>

<input type="Button" name="b3" value="ShowACCESS" onClick="call showAccess">

 

</center>

 

</form>

</BODY>

 

</HTML>

 

Внешний вид этого сайта показан на рисунке:

 

 

Мы пишем обработчик для кнопки в скрипте:

sub showAccess

 

Dim objacc, strConnection, strDataBase, rs,sfio

Set objacc = CreateObject("ADODB.Connection")

 

strConnection= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="

strdataBase="d:\german\JULIA_CIT_COURSE\ЛАБЫ\my.mdb"

 

objacc.Open strConnection & strDatabase

Set rs = objacc.Execute("Select * from stud")

 

 

Do until rs.EOF

sfio = rs("fio")

msgbox sfio

rs.MoveNext

Loop

 

 

end sub

 

База данных ACCESS размещена по адресу

 

"d:\german\JULIA_CIT_COURSE\ЛАБЫ\my.mdb"

Она содержит таблицу stud с полями fio и age. Для подключения к базе мы используем строку соединения

 

strConnection= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="



 

На основе этого соединения осуществляется выборка записей по команде SELECT.

 

Теперь мы усовершенствуем свой сайт, разместив в нем другие элементы:

 

 

Текст документа приведен ниже:

 

<HTML>

 

<H3><Font Color=White>ЛАБА VBS</Font><H3>

<HR>

 

<SCRIPT LANGUAGE="VBScript">

<!--

 

Option Explicit

Dim blnValue, strUserName, xCustomer,objacc, strConnection, strDataBase, rs,sfio

 

 

sub showAccess

 

 

Set objacc = CreateObject("ADODB.Connection")

 

strConnection= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="

strdataBase="d:\german\JULIA_CIT_COURSE\ЛАБЫ\my.mdb"

 

objacc.Open strConnection & strDatabase

Set rs = objacc.Execute("Select * from stud")

document.frm.tfio.value=rs("fio")

document.frm.tage.value=rs("age")

 

end sub

 

 

-->

 

</SCRIPT>

<BODY bgcolor=0x1255AA>

<form name="frm">

<H1> Information about collegues</h1>

<hr>

FIO:<Input type="TextField" name="tfio" value="" size=20>

<br>

AGE<Input type="TextField" name="tage" value="" size=10>

<br>

 

 

<center>

<br>

<br>

<table bgcolor=0x55aadd border=2>

<tr>

<td><input type="Button" name="b3" value="OpenACCESS" onClick="call showAccess"></td>



<td><input type="Button" name="b4" value="Forward" ></td>

<td><input type="Button" name="b5" value="Back"></td>

</tr>

</table>

 

</center>

 

</form>

</BODY>

 

</HTML>

 

Пока все еще работает одна кнопка. Запрограммируем кнопку движения по записям вперед и назад (они по сути идентичны).

 

Движение вперед:

 

sub forward

Dim h

on Error resume next

 

if rs.eof=false then

 

rs.movenext

if rs.eof=false then

if Err.Number<>0 then

msgbox Err.Description

exit sub

 

end if

else

rs.movefirst

end if

else

'rs.movefirst

end if

 

 

document.frm.tfio.value=rs("fio")

document.frm.tage.value=rs("age")

end sub

 

Движение вперед выполняет команда rs.movenext. Чтобы двигаться вперед, следует проверить достижение конца набора записей. VBScript (как, собственно и Visual Basic) требует такую проверку выполнять дважды:

 

if rs.eof=false then

 

rs.movenext

if rs.eof=false then

 

Это приводит к усложнению понимания программы, но что поделать ? Кнопку движения назад запрограммируйте самостоятельно. Проверка того, что достигнуто начало набора записей реализует метод rs.bof. Команда движения назад – это rs.moveprevious.

 

Теперь следует добавить в приложение поисковик. Будем искать запись по имени. Для этого несколько переделаем форму:

 

 

В таблице появилась новая кнопка, что достигнуто следующей перекодировкой:

 

<table bgcolor=0x55aadd border=2>

<tr>

<td><input type="Button" name="b3" value="OpenACCESS" onClick="call showAccess"></td>

<td><input type="Button" name="b4" value="Forward" onClick="call forward"></td>

<td><input type="Button" name="b5" value="Back"></td>

</tr>

<tr>

<td colspan=3 align=center><input type="Button" name="b6" value=" Find "></td>

</tr>

</table>

 

 

Заметим, что строка

 

<td colspan=3 align=center><input type="Button" name="b6" value=" Find ">

 

объединяет три столбца в один, где мы и помещаем кнопку для поиска.

 

Программу для кнопки поиска мы реализовали таким образом:

 

sub findrec

Dim sq

on Error resume next

 

rs.close

if Err.Number<>0 then

msgbox Err.Description

exit sub

 

end if

Set rs=nothing

sq="Select * from stud where fio="""+document.frm.tfio.value+""""

 

Set rs = objacc.Execute(sq)

if Err.Number<>0 then

msgbox Err.Description

exit sub

 

end if

 

document.frm.tfio.value=rs("fio")

document.frm.tage.value=rs("age")

 

end sub

 

Обратим внимание на обилие двойных кавычек в строке

sq="Select * from stud where fio="""+document.frm.tfio.value+""""

 

Дело в необходимости строковые параметры брать в двойные кавычки, т.е. запрос должен иметь вид

 

Select * from stud where fio="peter"

 

Поэтому чтобы программа правильно нас поняла, следует удваивать двойные кавычки.

 

 

ЗАДАНИЕ.

 

1. Запрограммировать команды вставки и удаления записей из БД

2. Отображать при переходе на новую запись фотографию коллеги в компоненте <img> , изменяя его свойство src. Для этого изменить структуру таблицы и хранить в ней адрес файла с фотографией.

3. Попытайтесь осуществить приближенный поиск по части имени. Используйте для этого функцию InStr(n,S1,S2) которая возвращает позицию подстроки S2 в строке S1, начиная просмотр с позиции n в строке S2. Если функция возвращает значение 0, то это означает, что поиск закончился неудачей.

 

<== предыдущая лекция | следующая лекция ==>
Импеданс тканей организма. Дисперсия импеданса. | ГРАДУИРОВКА ТЕРМОЭЛЕМЕНТА В КАЧЕСТВЕ ТЕРМОМЕТРА И ОПРЕДЕЛЕНИЕ ЕГО ТЕРМО-ЭДС

mylektsii.ru - Мои Лекции - 2015-2018 год. (0.019 сек.)Пожаловаться на материал