Программирование >>  Разработка пользовательского интерфейса 

1 ... 65 66 67 [ 68 ] 69 70 71 ... 147


Глава 7

Средства работы с данными

7.1. Организация ввода данных, их поиска и редактирования

Работа с данными в Visual FoxPro Работа с данными в Microsoft Access

7.2. Создание SQL-запросов

Запросы выборки

=SQLEXEC(lhandle, INSERT fuel oil (name fuel oil) ; VALUES (Дизельное топливо) )

&& Заполнение таблицы Tyre

=SQLEXEC(lhandle, INSERT tyre (name tyre) VALUES (4.5 ; J) )

* Заполнение таблицы Body

=SQLEXEC(lhandle, INSERT body (name body) VALUES ; (Хэтчбек) )

* Заполнение таблицы Model

=SQLEXEC(lhandle, INSERT model ; (name model,key firm,swept volume, ;

quantity drum,key fuel oil,key tyre,key body) VALUES ; (145 1.4,1,1351,4,3,3,1) )

* Заполнение таблицы Automobile passenger car

=SQLEXEC(lhandle, INSERT automobile passenger car ; (key model,date issue,cost); VALUES (1,7/7/94,10000) )

* Заполнение таблицы Customer

=SQLEXEC(lhandle, INSERT customer ; (name customer,address,tel, ; first name,juridical) ;

VALUES (Общество национальных героев,CПб ; ул М Маклая,77710,Юлиан,1) )

* Заполнение таблицы Sale =SQLEXEC(lhandle, INSERT sale

(account ,date sale,sum ) ; VALUES (101,5/1/96,10000) )

* Заполнение таблицы Account

=SQLEXEC(lhandle, INSERT account ; (account ,key customer,key auto, ; date write,selled,sum ) VALUES ; (101,1,1,1/1/96,1,10000) )

* Заполнение таблицы Salesman

=SQLEXEC(lhandle, INSERT salesman ; (last name,first name,patronymic) ; VALUES (Ажуров,Аристарх,Ариевич) )

* Заполнение таблицы Order

=SQLEXEC(lhandle, INSERT order ; (key customer,key model,key salman) ;

VALUES (1,1,1) )

* Создание привилегий (прав) доступа к полям таблиц БД

=SQLEXEC(lhandle, USE auto store ) =SQLEXEC(lhandle, GRANT insert, delete ON model ; TO ruben ) =SQLEXEC(lhandle, GRANT update,select ON model ; TO ruben, karina, lena, elena, ira )

=SQLEXEC(lhandle, REVOKE update,select ON customer ; (comment) ; FROM karina, lena )

* Разрываем соединение с источником данных ODBC

=SQLDISCONNECT(lhandle) ELSE

WAIT WIND Связаться с сервером не удается !

ENDIF



Запросы добавления Запросы обновления Запросы удаления

7.3. Изменение структуры данных с помощью SQL

7.4. Запросы и локальные представления в Microsoft Visual FoxPro

7.5. Запросы в Microsoft Access

Запрос добавления Запрос - Создание таблицы Запрос удаления Запрос обновления Перекрестный запрос

7.6. Работа с данными в локальной сети

Visual FoxPro

Несколько советов по увеличению производительности при работе в сети в приложениях

MicroxPro

Microsoft Access

Постоянно сталкиваясь с громадным потоком информации, которая обрушивается на нас, не давая передышки ни дома, ни на работе, мы привыкли к невзгодам информационного взрыва. Кажется, что тут сложного, вот она, информация! Поглощай ее глазами с экрана телевизора, лови из радиоприемника, читай, записывай, запоминай. Громадные массивы данных стали заполонять все возможные устройства, которые способны хоть в каком-то виде хранить данные. Почему так быстро растет значение информации? Да потому, что без нее не обойтись не только при управлении государством, маленькой фирмой, без информации трудно надеяться на успех даже не очень дорогой покупки.

Информация нужна всем, но больше всего нужна обработанная информация. Согласитесь, что вам гораздо больше пригодился бы список наиболее низких цен на телевизоры в ближайших к вам магазинах, чем толстый справочник всех магазинов вашего города. Если вы согласны, то перейдем к делу, поговорим об обработке данных.

7.1. Организация ввода данных, их поиска и редактирования

Для работы с данными, хранящимися в таблицах, необходимо организовать ввод данных, поиск и обновление устаревшей информации. Для ввода и редактирования данных лучший способ работы - создание форм. Как это сделать, мы расскажем в главе 9.

В этом параграфе вы узнаете:

о наиболее эффективных методах поиска данных;

о способах модернизации данных в отдельных полях и группах записей;

о том, каким образом в поиске данных могут помочь фильтры;

и как использовать для работы с данными объекты DAO.

Работа с данными в Visual FoxPro

Данные, для того чтобы отредактировать, необходимо найти. Самый простой способ - вывести данные в табличной форме, например, в окно Browse или воспользоваться объектом Grid. После этого, воспользовавшись клавишами навигации, найти нужную запись и изменить ее. Этот способ вполне пригоден для небольших таблиц, имеющих количество записей, измеряемое двузначным числом. Когда их количество составляет тысячи или даже миллионы, такой поиск затрудняется. В этом случае рекомендуется использовать команды и функции поиска. Одни из них работают без индексов, другие обязательно требуют их создания и подключения.

Одна из наиболее универсальных команд - LOCATE - работает без индексов. В то же время наличие индекса по выражению, по которому проводится поиск, без его подключения, значительно повышает скорость поиска. При наличии неподключенного индекса Visual FoxPro использует технологию Rushmore. Эта технология представляет собой специальный метод, существенно ускоряющий процесс поиска нужных данных. В то же время необходимо учитывать, что наличие большого количества индексов требует времени на их обновление.

Для проверки скорости поиска можно использовать следующую процедуру:

* В таблице Customer существует индекс по полю

* key customer.



* Отключая на всякий случай индексы, мы используем

* технологию Rushmore, что дает нам ускорение поиска

* более чем в 150 раз при работе с таблицей, имеющей

* больше 100000 записей.

SELECT Customer SET ORDER TO

nPeriod = SECONDS()

LOCATE FOR key customer = 45004

nPeriod 1 = SECONDS()

? nPeriod 1 - nPeriod

Еще более солидный выигрыш в скорости вы можете получить при работе с символьными полями.

Команда LOCATE имеет следующий синтаксис:

LOCATE FOR lExpression1 [Scope]

[WHILE lExpression2] [NOOPTIMIZE]

Команда LOCATE часто используется в связке с командой CONTINUE, которая позволяет продолжить поиск по установленному критерию поиска до тех пор, пока не будут найдены все записи.

Другой способ поиска всех нужных данных - использование фильтров, которые устанавливаются с помощью команды SET FILTER. Установка фильтров также дает выигрыш в скорости при наличии индекса по выражению поиска.

Команда SEEK позволяет проводить поиск по выражению, для которого имеется индекс и который подключен в момент поиска. Это самый быстрый метод поиска, но требующий постоянного переключения индексов в случае, если необходимо производить поиск по разным выражениям. При использовании этой команды для поиска нужных данных нет необходимости указывать поле, по которому проводится поиск. Таким полем автоматически объявляется активный в данный момент индекс.

SELECT Customer

SET ORDER TO key customer

t=SECONDS()

SEEK 45004

t1=SECONDS()

? t1-t

Если вам необходимо найти значение какого-то поля и вам известно значение одного из полей в соответствующей записи, то используйте функцию LOOKUP()

LOOKUP(ReturnField, eSearchExpression, SearchedField [, cTagName])

Аргументы в этой функции имеют следующее назначение:

ReturnField - поле, значение которого возвратит функция LOOKUP();

eSearchExpression - значение, по которому производится поиск;

SearchedField - поле, в котором производится поиск;

cTagName - имя тега, если есть возможность использовать подключенный индекс.

По скорости поиска функция LOOKUP() вполне сравнима с командой SEEK. Она также дает выигрыш в скорости при наличии индекса за счет использования технологии Rushmore. После успешного поиска указатель записи переводится в ту запись, в которой найдено искомое значение.

Пример использования функции LOOKUP(): CLEAR

t=SECONDS()

SET ORDER TO

mlook=LOOKUP(lastname,45004,Key customer)



1 ... 65 66 67 [ 68 ] 69 70 71 ... 147

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика