Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Теоретические сведения.
Данная работа позволяет организовать взаимодействие с базами данных через Интернет. Смысл ее в том, что пользователь может открыть удаленный сайт и «залезть» в базу данных удаленного компьютера, разумеется, при отсутствии ограничений, устанавливаемых браузером. По мере изложения теоретического материала будем «продвигаться» в изучении 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, то это означает, что поиск закончился неудачей.
|