Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание БД MS Access, Есть форма с Editami нужно сделать БД 
:(
    Опции темы
Сарт
Дата 20.9.2006, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 29.4.2006

Репутация: нет
Всего: 0



Собственно, сабж.
Если можно, простой примерчик, скажем для переменнны a и b, вводимых через Edit.
+поиск по БД, подключение БД ну и т.д.=)
Заранее спасибо=)
--------------------
[color=purple][/color]Died.Of course, System.StackOverflow 
PM MAIL   Вверх
Rodman
Дата 20.9.2006, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



Если у тебя уже есть база данных на Access... то тебе необходимо к ней подключиться...

Проще всего использовать ADO компоненты на соответсвующей закладке...

ADOConnection - добавляешь на форму и заполняешь свойство ConnectionString... т.к. у тебя база на Access, то выбирай драйвер Jet 4...

После этого добавляешь на форму ADOQuery и в нем добавляешь в поле Connection свой ADOConnection... 

и на конец в поле SQL пишешь запрос
Код

INSERT INTO TableName (Field1, Field2, ...)
VALUES (:Prm1, :Prm2, ...);


а в делфях пишешь
Код

ADOQuery.ParamByName('Prm1').value:=Edit1.Text;
ADOQuery.ParamByName('Prm2').value:=Edit2.Text;
ADOQuery.ExecSQL;


и будет тебе счастье...  если нет - пиши, спрашивай...
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Сарт
Дата 20.9.2006, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 29.4.2006

Репутация: нет
Всего: 0



К сожалению, у меня нету БД Аксесс=).
у меня есть чисто форма=) 
И есть кнопка Сохранить в БД. И есть кнопка поиск по БД. И если я не сделаю так,чтобы они заработали не будет меня=).

Так что, пожалуйста, ооочень подробно. 
Я бы хотел сделать так примерно:
При нажатии на кнопку искать в папке файл, скажем, 1.mdb При отсутсвии--создавать его, (ну и заполнять данными едитов). При наличии--открывать на запись.

Ну и поиск нужно реализовать по значению Едита А(стринговая переменная)
и по значению Едита Б(тож стринговая, фио хранит).

Также, нужно чтобы совпадение по значению Едита А было не строгим, то есть ,допустим, я ввожу 2 000 000, и оно находит все данные, начинающиеся на 2 000 000 (2 100 000, 2 999 999 например).

Помогите плиз=).

На всяк случай кидаю архив с проектом.

Это сообщение отредактировал(а) Сарт - 20.9.2006, 20:58

Присоединённый файл ( Кол-во скачиваний: 21 )
Присоединённый файл  ____________.rar 16,35 Kb
--------------------
[color=purple][/color]Died.Of course, System.StackOverflow 
PM MAIL   Вверх
Rodman
Дата 20.9.2006, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



Какой файл??? Где???

Добавлено @ 20:56 
Или ты программно хочешь создавать БД???
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Сарт
Дата 20.9.2006, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 29.4.2006

Репутация: нет
Всего: 0



Отредактил,все лежит=)
--------------------
[color=purple][/color]Died.Of course, System.StackOverflow 
PM MAIL   Вверх
Rodman
Дата 22.9.2006, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



Понимаешь... с Access у меня не удавалось не то что саму базу создать... а таблицу добавить в уже существующую базу...


Цитата(Сарт @  20.9.2006,  20:51 Найти цитируемый пост)
Также, нужно чтобы совпадение по значению Едита А было не строгим, то есть ,допустим, я ввожу 2 000 000, и оно находит все данные, начинающиеся на 2 000 000 (2 100 000, 2 999 999 например).


ну частичный поиск можно реализовать с помощью функции pos... но у ты хочешь найти совпадения в разных частях слова... такое возможно, если сравнивать посимвольно (т.е. на одном месте, по счету, долна стоять такая же цыфра или буква)... Сколько символов тебе нужно чтобы совпадало???

Я ща не могу твой проект глянуть...

Ты ответь на вышестоящие вопросы и вот на эти, а я на выходных твой проект посмотрю... попробую помоч...

1. 
Цитата(Сарт @  20.9.2006,  20:51 Найти цитируемый пост)
И есть кнопка Сохранить в БД.
 Как должна выглядить таблица в которую сохранять и одна ли она???
2.
Цитата(Сарт @  20.9.2006,  20:51 Найти цитируемый пост)
И есть кнопка поиск по БД. 
 Поиск в той же таблице по добавленным данным???
3. 
Цитата(Сарт @  20.9.2006,  20:51 Найти цитируемый пост)
Ну и поиск нужно реализовать по значению Едита А(стринговая переменная)
и по значению Едита Б(тож стринговая, фио хранит).
 Поиск производить если оба эдита заполнены???
4. Данные какого типа в базе???

Жду... Постараюсь помочь...

PM MAIL WWW Skype GTalk YIM MSN   Вверх
Сарт
Дата 22.9.2006, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 29.4.2006

Репутация: нет
Всего: 0



Постараюсь ответить попонятнее=)
Мне нужно, чтобы можно было выбирать-строгое соответствие или нет. В случае строгого-думаю, все понятно. В случае не строгого--совпадала первая цифра. НО! при этом совпадал и порядок числа(то есть при вводе 2 000 000 выводилась информация о кредитах на суммы от 2 000 000 до 2 999 999, которые есть в базе...и никаких лишних кредитов на сумму, скажем в 200 000.)

1)Таблица, я так думаю, должна выглядетьпримерно так:

ФИО   Дата рождения Место работы Телефон домашний(в проекте-телефон фактический) Место проживания Сумма Кредита 

Думаю, делать 1 таблицу...смысл делать больше то?

2)Поиск по всей таблице (по старым и добавленным данным)

3)Не совсем. В проекте посмотришь- у меня 1 едит на поиск. Думаю, сделать поиск вначале по столбцу ФИО, а потом по Сумме кредита

4)Стринговые переменные только.В проекте только 2 переменные типа не стринг, но они для БД не нужны....я так надеюсь=).
--------------------
[color=purple][/color]Died.Of course, System.StackOverflow 
PM MAIL   Вверх
Rodman
Дата 22.9.2006, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



А по какому полю искать строгое и не строгое соответствие??? По кредитам???
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Сарт
Дата 22.9.2006, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 29.4.2006

Репутация: нет
Всего: 0



Да, по сумме кредита.
--------------------
[color=purple][/color]Died.Of course, System.StackOverflow 
PM MAIL   Вверх
Fighter
Дата 23.9.2006, 04:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 810
Регистрация: 5.1.2005

Репутация: нет
Всего: 2



SQL - рулит. 
В SQL есть такая фига как INSERT TABLE. Вот разберись с ней.

Это сообщение отредактировал(а) Fighter - 23.9.2006, 04:26
PM MAIL   Вверх
Сарт
Дата 23.9.2006, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 29.4.2006

Репутация: нет
Всего: 0



Проблема останется только одна-как запустить потом эту БД на компе=)
короче, требования доп. такие-сделать бд. сделать поиск. Но при этом прога должна работать на сиандартном оффисном компе. То есть без SQL, Framework-а и т.д. Стоят на машинах тока оффисы. Поэтому наш выбор- Акксесс....Так как блокнот не потянет столько записей.
--------------------
[color=purple][/color]Died.Of course, System.StackOverflow 
PM MAIL   Вверх
Rodman
Дата 23.9.2006, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



Цитата(Сарт @  23.9.2006,  10:40 Найти цитируемый пост)
сиандартном оффисном компе
 - что это, клавиши западают smile ???

Вот я кое что добавил тебе...

а вот про 
Код

INSERT TABEL...


Fighter если можно то пример покажи, у меня не получаеться (SQL знаю)...

Это сообщение отредактировал(а) Rodman - 23.9.2006, 12:24

Присоединённый файл ( Кол-во скачиваний: 11 )
Присоединённый файл  ____________.rar 24,08 Kb
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Savek
Дата 23.9.2006, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 355
Регистрация: 10.4.2006
Где: Воронеж

Репутация: 7
Всего: 7



Цитата(Rodman @  23.9.2006,  12:16 Найти цитируемый пост)
а вот про 

Код    
INSERT TABEL...

Это глюк

для создания таблицы
Код

Create Table  MyTab (Field1  varchar(50), ....)


для вставки строки в таблицу
Код

insert into MyTable (Field1, ...) values ('value', ...)


Это сообщение отредактировал(а) Savek - 23.9.2006, 14:51
PM MAIL   Вверх
Rodman
Дата 23.9.2006, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



Я на SQL напишу любой запрос.. не нужно мне приводить примеры запросов... мне нужен исходник в делфяхк который поможет мне создать базу и в ней таблицы в Access... 

Savek,  при надобности я и сам тебе расскажу SQL...
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Fighter
Дата 24.9.2006, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 810
Регистрация: 5.1.2005

Репутация: нет
Всего: 2



Цитата(Rodman @  23.9.2006,  16:13 Найти цитируемый пост)
Я на SQL напишу любой запрос.. не нужно мне приводить примеры запросов... мне нужен исходник в делфяхк который поможет мне создать базу и в ней таблицы в Access... 


Ну так если с сиквелом у тебя нет проблем то кидай AdoQuery на форму и пользуйся на здоровье. 
PM MAIL   Вверх
Rodman
Дата 24.9.2006, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



Fighter, понимаешь с MySQL получится и создать базу и таблицы в ней... а вот с Access не в какую не проходят эти запросы... я так думаю что там структура какая-то не как везде...

Вот просто и хочу увидеть пример на Delphi который сделал бы это...

Если у кого-то получалось подобное, то выложи (но только если сам пробовал, а не в инете видел)...
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Сарт
Дата 24.9.2006, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 29.4.2006

Репутация: нет
Всего: 0



Как я понял, тема животрепещуща=)
Могу дать подсказку..что умные люди посоветовали....Мне правда не помогает=)
Итак, совет:
Совсем ",tp доп.требований к установленным программам" - естественно никак. 
Cамый простой вариант - БД MS Access (сама СУБД не нужна) и интерфейс к ней ну пусть на той же Delphi. Доступ через ADO. ну если совсем АПИ, то через ODBC.
--------------------
[color=purple][/color]Died.Of course, System.StackOverflow 
PM MAIL   Вверх
Savek
Дата 25.9.2006, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 355
Регистрация: 10.4.2006
Где: Воронеж

Репутация: 7
Всего: 7



Вот процедура создает базу Аксес
Код

procedure CreateMSAccessDB(filename : String);
var
  DBEngine, Workspace: Variant;
const
  {Important to use the following constant as is}
  dbLangGeneral = ';LANGID=0x0409;CP=1252;COUNTRY=0';
  dbVersion30 = 64;
begin
if not FileExists(FileName+'.mdb') then begin
  //DBEngine := CreateOleObject('DAO.DBEngine');
  DBEngine := CreateOleObject('DAO.DBEngine.36'); //For DAO 3.5
  Workspace := DBEngine.Workspaces[0];
  try
    Workspace.CreateDatabase(filename, dbLangGeneral, dbVersion30);
  except on EOleException do
    ShowMessage('Невозможно создать!');
  end;
  end;
end;


PM MAIL   Вверх
SergeBS
Дата 25.9.2006, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1111
Регистрация: 10.6.2005
Где: Владимир

Репутация: 11
Всего: 22



Сарт
Цитата

Могу дать подсказку..что умные люди посоветовали....Мне правда не помогает=)

Гони этих "умных" в шею.
Если это учебная задача, то лепи DBF-ки - потянет, а если нет, то подумай: что с тобой сделают, когда в результате, например, нажатия на Reset, скачка в розетке или особо "продвинутого" юзера у тебя вся база Access грохнется.  Особенно если через 3-4 месяца после начала эксплуатации. Сервера ставят не от жира, а чтобы данные не терялись. Поскольку дешевле будет один комп запереть в кладовке, чтобы никто не мог подойти, подоткнуть к нему стриммер, навесить SQL сервер и спать спокойно.  
Цитата

интерфейс к ней ну пусть на той же Delphi. Доступ через ADO.

Через ADO я тебе к любому серваку достучусь. А если в укромном уголке "вдруг" MS SQL заведется, то доп. требование: MDAC 2.8 + DCOM98 для Win95/98 (или IE >=5.5, который его молча впихнет).
Цитата

ну если совсем АПИ, то через ODBC

Пальцы об клаву до костей сотрешь smile. Пиши тогда сразу на VC++.

PM MAIL   Вверх
Сарт
Дата 25.9.2006, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 29.4.2006

Репутация: нет
Всего: 0



Задача НЕ учебная.. производственная=) Попросил директор настойчиво=) Была бы возможность с SQL я бы особо и не парился=)
А как насчет записи??Подскажи плиз, вельми дзенкуе скажу пану
--------------------
[color=purple][/color]Died.Of course, System.StackOverflow 
PM MAIL   Вверх
SergeBS
Дата 26.9.2006, 08:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1111
Регистрация: 10.6.2005
Где: Владимир

Репутация: 11
Всего: 22



Сарт,
 
Цитата

Задача НЕ учебная.. производственная=) Попросил директор настойчиво=) Была бы возможность с SQL я бы особо и не парился=)

Ну так и объясни директору, что либо в кладовке/подсобке/... (короче под замком, а ключ только у него и у тебя) сервер будет стоять, либо он через 4-5 месяцев от инфаркта помрет, когда все данные о кредитах грохнутся без возможности восстановления. И нефиг тут париться. Из говна пуля только говенная выйдет.
Насчет SQL: в комплекте Офиса есть MSDE - MS SQL server Developer Edition. Т.е. есть лицензия на Офис - можешь его поставить. Папка с инсталляшкой так и зовется - MSDE. От настоящего сервака отличается тем, что:
1. Одновременно - не более 5 транзакций, остальные - в очередь. Но все равно шустрее, умнее и надежнее, чем Access. 
2. Док в комплекте - никаких. И тулз тоже. Однако берем дистрибутив нормального сервера, при установке на не-серверную ОС (если не мухлевать smile ) встанет именно MSDE со всем комплектом док и инструментов. Серьезным дядям показываем лицензию на Офис - имеем право юзать сервер, а доки и инструменты предметом лицензирования не являются smile. Да и нужны они в основном на машине разработчика.
PM MAIL   Вверх
Сарт
Дата 26.9.2006, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 29.4.2006

Репутация: нет
Всего: 0



Я работаю тока 2 недели=) Так что вряд ли твой вариант мной осуществим=). Так что план пока--сделать БД на 1 компе, резервно вручную его втихомолку копировать, потом, когда накроется---достать из рукава=).Ну получить премию, а заодно и объяснить чем сервер хорош=)

В общем, базу , похоже, мне создатьь помогли... помогите плиз реализовать по ней еще и поиск=) 
--------------------
[color=purple][/color]Died.Of course, System.StackOverflow 
PM MAIL   Вверх
SergeBS
Дата 27.9.2006, 08:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1111
Регистрация: 10.6.2005
Где: Владимир

Репутация: 11
Всего: 22



Сарт
Цитата

Я работаю тока 2 недели=) Так что вряд ли твой вариант мной осуществим=). 

Мог бы еще добавить, что это первая работа, по образованию - не программист и т.п... Для полноты картины. Что, впрочем, ясно. И сколько работаешь - неважно. Минимально разумный начальник легко поймет, что дешевле сразу застраховаться от беды, чем потом волосы рвать и виноватых искать. А если считается, что техника сверхнадежна и люди не ошибаются - лучше сразу ищи новое место работы. Поскольку тебя уже назначили крайним.

Цитата

 Так что план пока--сделать БД на 1 компе, резервно вручную его втихомолку копировать, потом, когда накроется---достать из рукава=).

Ну-ну. Так БД и останется на 1 компе. Размечтался. От тебя втихомолку расползется и будешь только копированием заниматься. Пока вконец не запутаешься. Нет смысла такие задачи иметь в 1 экземпляре - не окупится даже разработка: дешевле тебя сразу на учет кредитования усадить, чем кого-то на нем держать, а тебе для него программу писать.

Файл-сервер в конторе наверняка есть. Поэтому:
1. Ставишь втихомолку SQL-сервер. Бэкапишь - на файл-сервер. Каждый вечер - недельным циклом + помесячно - в долгое хранение. Если очень хочется  секса стоя в гамаке на лыжах smile - на 1 машине крутишь MS Jet, а с остальных клиентами с Jet-ом работаешь. Упаси боже с БД напрямую работать - потом больно будет вспоминать.
2. СРАЗУ обеспечиваешь парольный вход - клиент БД уже не расползется по юзерам бесконтрольно и при небольшом старании (читай Уфимцева на SQL.RU) всегда будет известно, кто насвинячил. С датой, временем и т.п.

Ну и вдогонку: читай тут Пока не поздно.

PM MAIL   Вверх
RideX
Дата 27.9.2006, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 94
Регистрация: 8.9.2004

Репутация: 1
Всего: 7



Сарт, вот тебе основа, проверки и всё остальное, думаю, сам сможешь накрутить. База данных MS Access, обращение через запросы, думаю ты этого хотел? На пустую форму положи DBGrid, Edit и две кнопки. Всё остальное создаём в runtime и работаем как обычно.
Код

unit Project1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, DBGrids, ExtCtrls, DBCtrls, ComCtrls;

type
  TfmMain = class(TForm)
    btnNewDB: TButton;
    DBGrid1: TDBGrid;
    btnSearch: TButton;
    Edit1: TEdit;
    procedure btnNewDBClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btnSearchClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  fmMain: TfmMain;

implementation

{$R *.dfm}

uses DB, ADODB, ComObj;

const
  dbName            : String = 'mybase.mdb';
  MasterTable       : String = 'MyMasterTable';

var
  ADOCommand        : TADOCommand;
  ADOConnection     : TADOConnection;
  ADODataSetMaster  : TADODataSet;
  MasterDataSource  : TDataSource;
  strCmdText        : String;
  strConnectString  : String;


procedure TfmMain.FormCreate(Sender: TObject);
begin
  // Строка для подключения к базе
  strConnectString := 'Provider=Microsoft.Jet.OLEDB.4.0' +
                      ';Data Source=' + dbName +
                      ';Jet OLEDB:Engine Type=5';

  // Создаём переменные и подключаемся к базе
  ADOConnection := TADOConnection.Create(nil);
  ADOConnection.ConnectionString := strConnectString;
  ADOConnection.LoginPrompt := False;
  ADOConnection.Mode := cmReadWrite;
  ADOConnection.Connected := True;

  ADOCommand := TADOCommand.Create(nil);
  ADOCommand.Connection := ADOConnection;
  ADOCommand.CommandType := cmdText;

  ADODataSetMaster := TADODataSet.Create(nil);
  ADODataSetMaster.Connection := ADOConnection;
  ADODataSetMaster.CommandType := cmdText;
  ADODataSetMaster.CommandText := 'SELECT * FROM ' + MasterTable;
  ADODataSetMaster.Active := True;

  MasterDataSource := TDataSource.Create(nil);
  MasterDataSource.DataSet := ADODataSetMaster;

  // Выводим данные в DBGrid
  DBGrid1.DataSource := MasterDataSource;
end;

procedure TfmMain.btnNewDBClick(Sender: TObject);
var
  ADOX: OLEVariant;
  i: integer;
  j: int64;
begin
  // Создаем базу
  ADOX := CreateOleObject('ADOX.Catalog');
  ADOX.Create(strConnectString);
  ADOX := NULL;

  // Подключаемся к созданной базе
  ADOConnection := TADOConnection.Create(nil);
  ADOConnection.ConnectionString := strConnectString;
  ADOConnection.LoginPrompt := False;
  ADOConnection.Mode := cmReadWrite;
  ADOConnection.Connected := True;

  ADOCommand := TADOCommand.Create(nil);
  ADOCommand.Connection := ADOConnection;
  ADOCommand.CommandType := cmdText;

  // Создаём в базе таблицу
  strCmdText := 'CREATE TABLE ' + MasterTable +
                '([id] COUNTER,'+
                '[ИНН] DECIMAL PRIMARY KEY NOT NULL UNIQUE,' +
                '[Имя] VARCHAR(150) WITH COMPRESSION,' +
                '[Адрес] VARCHAR(150) WITH COMPRESSION,' +
                '[Телефон] VARCHAR(150) WITH COMPRESSION)';
  ADOCommand.CommandText := strCmdText;
  ADOCommand.Execute;

  // Просто пример, добавляем данные в таблицу
  j := 665906037862;
  for i := 193 to 196 do begin
    strCmdText := 'INSERT INTO ' + MasterTable +
                  '(ИНН, Имя, Адрес, Телефон) VALUES'+
                  '("' + IntToStr(j) + '", "'+Chr(Ord(i))+'иванов", "улица, дом", "(343)123-45-67")';
    ADOCommand.CommandText := strCmdText;
    ADOCommand.Execute;
    Inc(j, 100000000000);
  end;
end;

procedure TfmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  // Освобождаем переменные
  if ADOConnection <> nil then begin
    ADOConnection.Connected := False;
    ADOConnection.Free;
    ADOConnection := nil;
  end; 
  if ADOCommand <> nil then begin
    ADOCommand.Free;
    ADOCommand := nil;
  end;
  if ADODataSetMaster <> nil then begin
    ADODataSetMaster.Active := False;
    ADODataSetMaster := nil;
  end;
  if MasterDataSource <> nil then begin
    MasterDataSource.Free;
    MasterDataSource := nil;
  end;
end;

procedure TfmMain.btnSearchClick(Sender: TObject);
begin
  DBGrid1.DataSource.DataSet.DisableControls;

  // Пример, поиск в таблице по полю [Имя], по известному началу строки
  ADODataSetMaster.Active := False;
  strCmdText := 'SELECT * FROM '+ MasterTable + ' WHERE [Имя] LIKE "'+ Edit1.Text + '%"';
  ADODataSetMaster.CommandText := strCmdText;
  ADODataSetMaster.Active := True;

  DBGrid1.DataSource.DataSet.EnableControls;
end;

end.


Добавлено @ 09:13 
Поиск по любому вхождению делай так:
Код

LIKE "%искомая_строка%"


если только по концу, то соответственно так:
Код

LIKE "%искомая_строка"


Hint: например, через поле таблицы [ИНН] удобно привязать связанную подчинённую таблицу, а то бывает такой кошмар, что люди делают по две, чуть ли в точности не дублирующие друг-друга таблицы. Получается, естественно, огромная избыточность. Образец этого недавно здесь видел, если найду ссылку, добавлю сюда для ознакомления.

P.S. Конечно, если будешь обращаться к данным из других форм, перенеси переменные fmMain в глобальные для всего приложения.

Это сообщение отредактировал(а) RideX - 27.9.2006, 09:18
PM   Вверх
Сарт
Дата 27.9.2006, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 29.4.2006

Репутация: нет
Всего: 0



Сенкс, завтра испробуем на практике, отпишусь какие траблы возникнут=)
Блин со второго раза ткоа воткнул в чем разница между поисками=) а разница то в--%.
--------------------
[color=purple][/color]Died.Of course, System.StackOverflow 
PM MAIL   Вверх
Rodman
Дата 27.9.2006, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



Savek, а у тебя нет подобный примеров для других СУБД??? или откуда ты вытянул напиши... пожалуйста...
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1543 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.