Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БАЗЫ ДАННЫХ. курсовая на OpenOffice.doc
Скачиваний:
21
Добавлен:
23.11.2018
Размер:
1.75 Mб
Скачать

Загрузка данных в массив и вывод списка

Не все можно сделать SQL запросом. При наличии сложных вычислений с малым объемом данных можно использовать в массивы и обсчитывать данные в памяти.

'----------------------------------------------------------------------------

Function queryArray(oCon as Object,strSQL as String)

'возвращает массив, состоящий из элементов выборки,

'полученной в результате запроса strSQL

Dim a() As String 'Объявляем массив

Dim n as Integer 'Счетчик

n=0

oStatement=oCon.CreateStatement() 'объект для выполнения запросов

oResult=oStatement.executeQuery(strSQL) 'выполняем запрос

Do While oResult.next()

n=n+1

ReDim Preserve a(1 to n)'увеличиваем размер массива

a(n)=oResult.getString(1)'заносим в новую ячейку значение

Loop

queryArray=a

End Function

'----------------------------------------------------------------------------

Sub OnBtnArray(oEvent)

'загружает список групп в массив и выводит его в MessageBox

oForm = oEvent.Source.getModel().getParent()

oCon=oForm.ActiveConnection 'объект для доступа к базе данных

'составим массивы строк и колонок

aGrp()=queryArray(oCon,"SELECT DISTINCT ""Группа"" from ""Ведомость""")

oList=oForm.getByName("ListBox") 'список - элемент формы

oList.StringItemList=aGrp 'выводим массив строк в список

End Sub

'----------------------------------------------------------------------------

Загрузка файла в базу данных и выгрузка файла из базы

Создать таблицу «Файл» с полями:

Код

Целое[INTEGER]

Авто – значение, первичный ключ

Имя

Текст[VARCHAR]

Данные

Картинка[LONGVARBINARY]

Создать форму «Файлы» с помощью мастера. Добавить поле типа «Выбор файла» с помощью панели инструментов «Дополнительные элементы управления». Добавить кнопки «Загрузить файл» и «Выгрузить файл» м связать их с приведенными ниже функциями «putFile» и «getFile»

'----------------------------------------------------------------------------

Sub putFile(oEvent)

'Загружает в базу файл с именем, заданным в элементе FileSelection

oForm = oEvent.Source.getModel().getParent()

sFileName=oForm.getByName("FileSelection").text

If NOT FileExists(sFileName) Then 'проверим наличие файла

Msgbox("Не найден заданный файл")

Exit Sub

End If

oCon=oForm.ActiveConnection 'объект для доступа к базе данных

oSimpleFileAccess = createUnoService("com.sun.star.ucb.SimpleFileAccess")

oStream = oSimpleFileAccess.openFileRead(sFileName)

lLen = oStream.getLength() 'Длина файла

sSQL = "insert into ""Файл""(""Имя"", ""Данные"") values (?, ?)"

oStatement = oCon.PrepareStatement(sSQL)

oStatement.SetString( 1, sFileName)

oStatement.setBinaryStream(2, oStream, oStream.getLength())

oStatement.ExecuteUpdate()

oStream.closeInput()

oForm.reload()'обновляем список файлов в форме

End Sub

'----------------------------------------------------------------------------

Sub getFile(oEvent)

'Сохраняет в файл с именем, заданным в элементе FileSelection

'бинарные данные из текущей записи

Dim oData() 'Объявляем массив

oForm = oEvent.Source.getModel().getParent()

oForm.updateRow() 'сохраняем изменения текущей записи в базу данных

oCon=oForm.ActiveConnection 'объект для доступа к базе данных

idFile=oForm.getInt(oForm.findColumn("Код")) 'из текущей записи

sFile=oForm.getByName("FileSelection").text 'из элемента FileSelection

sSQL = "SELECT ""Данные"" FROM ""Файл"" WHERE ""Код""="+idFile

oStatement=oCon.CreateStatement() 'объект для выполнения запросов

oResult = oStatement.executeQuery(sSQL) 'выполняем запрос

oResult.next()' считываем запись

oStream = oResult.getBinaryStream(1)

oSimpleFileAccess = createUnoService("com.sun.star.ucb.SimpleFileAccess")

oSimpleFileAccess.writeFile(sFile, oStream)

End Sub

'----------------------------------------------------------------------------

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]