Студопедия

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

Разделы сайта

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






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

 

Данная работа позволяет организовать взаимодействие с базами данных через Интернет. Смысл ее в том, что пользователь может открыть удаленный сайт и «залезть» в базу данных удаленного компьютера, разумеется, при отсутствии ограничений, устанавливаемых браузером. По мере изложения теоретического материала будем «продвигаться» в изучении 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, то это означает, что поиск закончился неудачей.

 

<== предыдущая лекция | следующая лекция ==>
Импеданс тканей организма. Дисперсия импеданса. | Градуировка термоэлемента в качестве термометра и определение его термо-эдс




© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.