Visual Basic 6.0 - база данных
база данных
Я все таки решил воплотить свою идею, и дорос до первой альфы.
Объектно-ориентированные СУБД - это не совсем то.
Следующим письмом идет описание (большое), не думайте, что я злостный спамер, почитайте, посмотрите, может кому это нужно. Может кому-то чего-то не хватает.
Кому нужен сам класс и его исходники - отдам.
Кому ничего не нужно - просто почитайте следующее письмо, вдруг именно вы - это тот человек, котороый отвернет меня от создания велосипеда, да еще и с квадратными колесами. ;)
* Origin: 1134 (2:5045/44.13)
описание класса dbase
* Description for 1134BASE *
*Install
Add 1134BASE.DLL to References.
Add "Dim x as dbase" to declares.
Add "Set x = new dbase" to startup module procedure.
*Before Reading - Warnings
Hумерация баз, строк и любых наборов начинается с 0
База 0 - означает базу по умолчанию, которая устанавливается функцией BASE
Компонент написан на языке Visual Basic 5 и использует msvbvm50.dll
*Functions Description
Function ExportList(BaseFile As String) As Long
description:
Открывает текстовый файл вида Ключ1.Ключ2.Ключ3 Значение ключа и создает
из него текущую базу.
in params:
BaseFile - имя текстового файла.
return:
Возвращает число ключей базы.
example:
numkeys = x.ExportList ("list.lxt")
'возвратит число строк в файле list.txt
Sub ImportList(BaseFile As String)
description:
Сохраняет файл в виде текстового файла вида Ключ1.Ключ2 Значение ключа.
ВHИМАHИЕ: Если у вас в значениях ключа используются переносы строки,
то данный список уже нельзя будет корректно загрузить обратно функцией
ExportList.
in params:
BaseFile - имя текстового файла
example:
x.ImportList "save.txt"
Sub SaveBaseDump(BaseFile As String, Optional bid As Long = 0)
description:
Сохраняет базу данных в виде двоичного файла, что обеспечивает
высокую скорость загрузки и сохранения.
in params:
BaseFile - имя файла для сохранения.
bid [0] - номер базы данных. В случае 0 используется выбранная база.
example:
x.SaveBaseDump "base.dat"
Sub LoadBaseDump(BaseFile As String, Optional bid As Long = 0)
description:
Загружает базу данных из двоичного файла.
in params:
BaseFile - имя файла для сохранения.
bid [0] - номер базы данных. В случае 0 используется выбранная база.
example:
x.LoadBaseDump "base.dat"
Sub ClearBase(bid As Long)
description:
Очищает базу данных. База при этом не удаляется.
in params:
bid - номер базы данных.
example:
x.ClearBase(1)
Function CreateBase() As Long
description:
Создает пустую базу данных.
return:
Возвращает номер созданной базы.
example:
newbase = x.CreateBase
'возвратит 2, если создается только первая база
Sub CopyBaseToBase(bidfrom As Long, bidto As Long)
description:
Создает полную копию базы bidfrom в базе bidto, включая указатели
позиции, выборку и прочие параметры базы. Все данные в базе bidto
при этом уничтожаются.
in params:
bidfrom - номер базы данных - источника.
bidto - номер базы данных - приемника.
example:
x.CopyBaseToBase 1, 2
Function BasePosition(Optional BasePos As Long, Optional bid As Long = 0) As Long
description:
Устанавливает (возвращает) указатель позиции в базе номер bid.
in params:
BasePos [] - если параметр установлен, то указатель сдвигается на
установленное значение, иначе функция просто возвращает значение.
bid [0] - номер базы данных. В случае 0 используется выбранная база.
return:
Возвращает значение указателя позиции.
example:
1) currentIn3 = BasePositon(,3)
2) BasePosition 1, 99
Function SelectPosition(Optional SelectPos As Long, Optional bid As Long = 0) As Long
description:
Устанавливает (возвращает) указатель позиции в выборке базы bid.
in params:
SelectPos [] - если параметр установлен, то указатель сдвигается на
установленное значение, иначе функция просто возвращает значение.
bid [0] - номер базы данных, от которой делалась выборка.
return:
Возвращает значение указателя позиции.
example:
1) currentIn4 = x.SelectPositon(,4)
2) x.SelectPosition 2, 94
Sub AddData(AddKey As String, AddValue As String, Optional AddPosition As Long = 0, Optional bid As Long = 0)
description:
Добавляет элемент в базу.
in params:
AddKey - ключ добавляемой строки
AddValue - значение добавляемой строки
AddPosition [0] - позиция. Если 0, то добавляется последней строкой.
bid [0] - номер базы данных.
example:
1) x.AddKey "1973.Cars.Awarded", "ZAZ", 1
2) x.AddKey "War.Tanks.Best", "ZAZ"
Sub RemoveData(RemovePosition As Long, Optional bid As Long = 0)
description:
Удаляет строку с заданным номером из базы.
in params:
RemovePosition - позиция, с которой удалять.
bid [0] - номер базы данных.
example:
x.RemoveData 1
Function GetKeyByID(KeyID As Long, Optional bid As Long = 0) As String
description:
Возвращает значение ключа строки базы данных по ее номеру.
in params:
KeyID - номер строки базы данных.
bid [0] - номер базы данных.
return and example:
retval = GetKeyByID(1)
' для строки 'Key1.Key99 Value Value' возвратит Key1.Key99
Function GetValueByID(KeyID As Long, Optional bid As Long) As String
description:
Возвращает значение значения строки базы данных по ее номеру.
in params:
KeyID - номер строки базы данных.
bid [0] - номер базы данных.
return and example:
retval = GetValueByID(1)
' для строки 'Key1.Key99 Value Value' возвратит Value Value
Function GetSelectKeyByID(KeyID As Long, Optional bid As Long) As String
description:
Возвращает значение ключа строки выборки по ее номеру.
in params:
KeyID - номер строки выборки.
bid [0] - номер базы данных, в которых произведена выборка.
return and example:
retval = GetSelectKeyByID(1)
' для строки 'KeyS.KeyZ Value and Value' возвратит KeyS.KeyZ
Function GetSelectValueByID(KeyID As Long, Optional bid As Long) As String
description:
Возвращает значение значение строки выборки по ее номеру.
in params:
KeyID - номер строки выборки.
bid [0] - номер базы данных, в которых произведена выборка.
return and example:
retval = GetSelectValueByID(1)
' для строки 'KeyS.KeyZ Value and Value' возвратит Value and Value
Function GetLastInternalError() As String
description:
Возвращает описание последней произошедшей внутренней ошибки
и очищает буфер описания ошибок.
return:
Возвращает строку описания ошибки.
example:
if base(975) = 0 then errbuf = GetLastInternalError()
' возвратит '#01# No such base!' если нет такой базы
Function Base(Optional SetBaseNumber As Long) As Long
description:
Возвращает (устанавливает) базу по-умолчанию.
in params:
SetBaseNumber[] - если установлен, то меняет базу по умолчаню.
return:
Возвращает номер базы, 0 в случае внутренней ошибки.
example:
1) x.Base 4
2) defaultbase = x.Base()
Sub SetBaseDescription(basedescription As String, Optional BaseNumber As Long = 0)
description:
Устанавливает строковое описание для базы данных.
in params:
basedescription - описание базы данных.
BaseNumber [0] - номер (id) базы данных.
example:
x.SetBaseDescription "Моя Первая БАЗА"
Function GetBaseDescription(Optional BaseNumber As Long = 0) As String
description:
Возвращает строковое описание для базы.
in params:
BaseNumber [0] - номер базы данных.
return:
Возвращает описание базы данных. Возвращает пустую строку в случае
внутренней ошибки или в случае отсутствия описания у базы данных.
example:
retval = GetBaseDescription()
Function GetBase(kselect() As String, vselect() As String, Optional bBegin = 1, Optional bEnd = 0, Optional bid As Long = 0) As Long
description:
Заполняет массивы ключами и значениями из базы данных.
in params:
bBegin [1] - начальная строка.
bEnd [0] - конечная строка. Если 0 - то заполнение идет до конца базы.
bid [0] - номер базы данных.
out params:
kselect() - строковой массив, содержащий ключи базы от 1 до СКОЛЬКОHАДО
kselect() - строковой массив, содержащий значения базы.
return:
Возвращает количество полученных строк. Возвращает 0 в случае внутренней
ошибки, или, если получено 0 строк.
example:
dim k() as string, v() as string
z = x.GetBase(k(),v())
for q = 1 to z
if MsgBox (k(q) & " " & v(q),vbYesNo,"View Next?") = vbNo then exit for
next q
Function BaseItems(Optional bid As Long = 0) As Long
description and return and example and in params:
Возвращает число строк в базе данных bid.
Function SelectItems(Optional bid As Long = 0) As Long
description and return and example and in params:
Возвращает число строк в выборке (для базы данных bid).
Sub ClearSelect(Optional bid As Long = 0)
description and in params:
Очищает буфер выборки для базы bid.
Function GetSelectResult(kselect() As String, vselect() As String, Optional bBegin = 1, Optional bEnd = 0, Optional bid As Long = 0, Optional ClearSelectResults As Boolean = True) As Long
description:
Заполняет массивы ключами и значениями выборки.
in params:
bBegin [1] - начальная строка.
bEnd [0] - конечная строка. Если 0 - то заполнение идет до конца базы.
bid [0] - номер базы данных.
ClearSelectResult [True] - очищать ли буфер выборки по окончанию.
out params:
kselect() - строковой массив, содержащий ключи базы.
kselect() - строковой массив, содержащий значения базы.
return:
Возвращает количество полученных строк. Возвращает 0 в случае внутренней
ошибки, или, если получено 0 строк.
example:
dim k() as string, v() as string
z = x.SelectBaseKeys ("1979.Cars")
x.GetSelectResult(k(),v())
Function SplitI(xMas As String, xDel As String, xRes() As String) As Long
description:
Функция, выполняющая практически аналогичные функции от функции Split в
Visual Basic 6.
Разделяет строку на массив строк по разделителю. Первый элемент массива
имеет индекс 1. Делитель может быть только одним символом.
in params:
xMas - строка для разделения
xDel - разделитель. ВHИМАHИЕ, это должен быть только один символ.
out params:
xRes() - возвращает результат работы функции.
return:
Возвращает количество элементов полученного массива.
example:
dim s() as string
z = spliti("Have a nice function!"," ",s())
' функция возрвратит 4
' s(1) содержит 'Have'
' s(2) содержит 'a'
' s(3) содержит 'nice'
' s(4) содержит 'function!'
Function SelectBaseKeys(BaseRequest As String, Optional bid As Long = 0, Optional Deep As Long = 0, Optional NoClearPrev As Boolean = False) As Long
description:
Производит выборку по ключам и их подключам.
Сохраняет результат в буфере выборки.
in params:
BaseRequest - подстрока, содержащая имя ключа.
bid [0] - номер базы данных.
Deep [0] - глубина поиска подключей. При 0 подключи не учитываются.
NoClearPrev [False] - Если True, то буфер выборки базы не очищается.
return:
Возвращает число выбранных элементов.
example:
1) Выборка только по текущему ключу
x.SelectBaseKeys ("1983.Car",,0)
' затронет ключ 1983.Car но не затронет ключи 1983.Car.Awarded
' и 1983.Car.Awarded.GoldMedal
2) Выборка по глубине 1
x.SelectBaseKeys ("1983.Car",,1)
' затронет ключи 1983.Car и 1983.Car.Awarded
Function FindFirstKey(key As String, Optional bid As Long = 0, Optional SetPos As Boolean = False) As Long
description:
Возвращает позицию первого ключа с именем key.
(пояснение - имена ключей не являются уникальными, можно использовать
сколько угодно ключей с одинаковыми именами, например:
1921.Events Great battle on Mars
1921.Events Small battle on Sun
1921.Events I like ice-cream
это является допустимой структурой базы)
in params:
key - строковое имя ключа (только полное совпадение).
bid - номер базы данных.
SetPos [False] - если True, то устанавливает указатель позиции.
return:
Возвращает номер позиции.
example:
retval = x.FindFirstKey("1983.Car")
' возвратит 1, если это первая запись
Function GetFirstBaseValue(key As String, Optional bid As Long = 0, Optional SetPos As Boolean = False) as string
description:
Возвращает значение первого ключа с именем key.
in params:
key - строковое имя ключа (только полное совпадение).
bid - номер базы данных.
SetPos [False] - если True, то устанавливает указатель позиции.
return:
Возвращает значение ключа.
example:
retval = x.GetFirstBaseValue("1983.Key")
' возвратит ZAZ для записи 1983.Key ZAZ
Function FindNextKey(key As String, Optional bid As Long = 0) as long
description:
Возвращает позицию следущего ключа с именем key и передвигает
указатель позиции.
in params:
key - строковое имя ключа (только полное совпадение).
bid - номер базы данных.
return:
Возвращает номер позиции, или 0, если больше нет совпадений.
example:
x.baseposition 0
do
retval = x.FindNextKey("1983.Car")
if retval = 0 then
exit do
else
'do something
end if
loop
Function GetNextBaseValue(key As String, Optional bid As Long = 0) as string
description:
Возвращает значение следущего ключа с именем key.
Передвигает указатель позиции на текущий ключ.
in params:
key - строковое имя ключа (только полное совпадение).
bid - номер базы данных.
return:
Возвращает значение позиции.
Если больше нет совпадений, то возвращает пустую строку,
и GetLastInternalError возвращает '#00#'
example:
x.baseposition 0
x.GetLastInternalError 'clear error buffer
do
retval = x.GetNextBaseValue("1983.Car")
if retval = "" then
if x.GetLastInternalError = "#00#" then
exit do
else
'do something
end if
end if
loop
Function str_replace(p1 As String, p2 As String, pp As String) As String
description:
Выполняет похожие функции с функцией Replace из Visual Basic 6.
Заменяет p1 на p2 в строке pp.
in params:
p1 - параметр 1. Что менять.
p2 - параметр 2. Hа что менять.
pp - строка-источник. Где искать то, что менять.
return:
Возвращает измененную строку. Что получилось.
example:
retval = x.str_replace ("99","1994", "199 cars in 99 better 299")
' возвратит '11994 cars in 1994 better 21994'
Function DimToStr(arr() As String, Optional separator As String = vbCrLf) As String
description:
Преобразует массив строк в строку по разделителю.
in params:
arr() - строковой массив.
separator [vbCrLf] - разделитель. По умолчанию - новая строка (#13 #10).
return:
Возвращает строку.
examle:
dim a(2) as string
a(1) = "123"
a(2) = "321"
retval = x.DimToStr(a()," cool ")
' возвратит '134 cool 321'
Function KeyOwners(key As String, owners() As String, Optional MinDeep = 1) As Long
description:
Генерирует массив всех подключей ключа, которые вычисляются по текущему
ключу.
(примечание - структура базы такова, что можно создавать ключи
более высокого уровня минуя ключи более низкого, поэтому эти
ключи могут не существовать.
Функция работает с абстрактными строками, а не с ключами базы)
in params:
key - строка, описывающая ключ, например 'Games.Strategy.Best'
MinDeep [1] - минимальный уровень ключа, который будет показан.
out params:
owners() - возвращает строковой массив всех подключей.
return:
Возвращает количество полученных элементов.
example:
dim s() as string
x.GetOwners "Games.Strategy.Best",s()
' возвратит массив 'Games', 'Games.Strategy'
Function KeyParent(key As String) As String
description:
Возвращает подключ, уровень которого ниже ключа на 1.
(Функция работает с абстрактными строками, а не с ключами базы.)
in params:
key - строка, описывающая ключ.
return:
Возвращает строку с названием подключа.
example:
1) retval = x.KeyParent ("Games.Best.My") ' возвратит 'Games.Best'
2) retval = x.KeyParent ("Games.Best") ' возвратит 'Games'
3) retval = x.KeyParent ("Games") ' возвратит пустую строку
Function KeyLevel(key As String) As Long
description:
Показывает уровень ключа.
in params:
key - абстрактная строка, описывающая ключ (можно со значением).
return:
Возвращает число, соответствующее уровню ключа.
example:
1) retval = x.Keylevel("1945.1946.1943") ' возвратит 3
2) retval = x.Keylevel("1945") ' возвратит 1
3) retval = x.Keylevel("1.2.3.14.15") ' возвратит 5
* THE (HAPPY) END {936 strings} *
* Origin: 1134 (2:5045/44.13)
Re: Очень надо
Hello Vasily
VVV> Подскажите plz. как сделать чтобы
VVV> по клику кнопки выключался\пеpезагpужался комп?
Посмотpи спpавочник по винапи ф-ям. А так есть стандаpт.
Точно не помню, но пpимеpно так:
"rundll32, reboot"
"rundll32, shutdown"
Hайду, посмотpю конкpетно, помоему какую-то опцию забыл.
С уважением, Amil.
* Origin: Hа пожаpе и хpен - водопpовод. (2:5051/1.137)
Re: InputBox+PasswordChar
From: "A. Skrobov" <tyomitch [@] r66.ru>
Hello, Amil!
You wrote in conference fido7.ru.visual.basic to "A Skrobov"
<fido7.ru.visual.basic [@] talk.ru>to A Skrobov on Fri, 23 Apr 2004
15:18:53 +0400:
TA>>> Получаешь паpоль в пеpеменную pswd,
TA>>> По-моему такую штуку взломщики не беpут...
AS>> Тогда и кнопки pедактиpования pаботать не будут, вpоде бэкспейса.
AS> Будут. Во всяком случае в пятой веpсии VB.
Бэкспейс совершенно точно не будет, только что проверил.
With best regards, A. Skrobov. E-mail: tyomitch [@] r66.ru
--
* Origin: Talk.Mail.Ru (2:5020/400)
callback-функции
Как в своем классе организовать callback-функции?
* Origin: 1134 (2:5045/44.13)
Re: Работа функций Win32Api под XP
From: Alexander Asyabrik <belmis [@] mail.belpak.by>
Привет, Vasiliy.
Вы, было дело, писали, 11:49 23.04.04:
>> А вообще тебе лучше готовым классом попробовать пользоваться, там это
>> уже все будет плотно упаковано. Master, А-у :) !
VK> Может быть, только где ж его взять-то?
Ясен пень у Master-а дома :-)
http://mastershome.net.ru/vbfaq/d22.htm
--
Alexander
* Origin: Talk.Mail.Ru (2:5020/400)
как реализовать QueryTable
From: "Mike" <mikeduglas [@] intercare.ru>
Hi All,
Excel подключен к внешним данным
http://www.drugreg.ru/Bases/WebRemoveQuery.asp?Action=FIND&MnfNmR=Gedeon
Макрос Selection.QueryTable.Refresh BackgroundQuery:=True получает данные
запроса из ASP. А как сделать то же самое через Connection и Recordset? То
есть, какая тут строка подключения и строка запроса? Я много чего пробовал, но
в лучшем случае получаю ошибку при открытии Recordset
С уважением, Михаил
* Origin: FidoNet Online - http://www.fido-online.com (2:5020/400)
подскажите как
______________________________________________________________________________+
-=*HeLLo All*=-
Что делает dll и как он pаботает(функциониpует)?
Если можно пpимеp с пояснениями.
Заpанее спасибо.
______________________________________________________________________________+
С тем 2:6083/16.3 All и пpощаюсь...
|||Windows глючит уже:|||
*** 0 days 0 hours 22 min***
///"Winamp 5.0 наяpивает": <<<Party.mix>>>\\\
* Origin: ... и тишина... (2:6083/16.3)
Очень надо
______________________________________________________________________________+
-=*HeLLo All*=-
Подскажите plz. как сделать чтобы
по клику кнопки выключался\пеpезагpужался комп?
______________________________________________________________________________+
С тем 2:6083/16.3 All и пpощаюсь...
|||Windows глючит уже:|||
*** 0 days 0 hours 45 min***
///"Winamp 5.0 наяpивает": <<<02 VSE VERNETSYA>>>\\\
* Origin: ... и тишина... (2:6083/16.3)
Re: InputBox+PasswordChar
Hello A
AA>>> Можно ли как-нибудь сделать сабж? Т.е. в InputBox пpи вводе
AA>>> символов отобpажался символ "*".
TA>> Есть pешение для TextBox:
TA>> В свойствах установи PasswordChar = "*"
TA>> Dim pswd As String
TA>> Private Sub Text1_KeyPress(KeyAscii As Integer)
TA>> pswd = pswd + Chr(KeyAscii)
TA>> KeyAscii = Asc("*")
TA>> End Sub
TA>> Получаешь паpоль в пеpеменную pswd,
TA>> По-моему такую штуку взломщики не беpут...
AS> Тогда и кнопки pедактиpования pаботать не будут, вpоде бэкспейса.
Будут. Во всяком случае в пятой веpсии VB.
With best regards, Amil.
* Origin: Take it easy! (2:5051/1.137)