Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
 Аватар для Shura_deg
83 / 19 / 5
Регистрация: 01.02.2015
Сообщений: 655

ADO, Access, SQL, Магазин

18.10.2015, 00:46. Показов 2345. Ответов 38
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые форумчане помогите пожалуйста придумать красивое оформление для базы данных
И какие запросы SQL будут актуальны для данной базы
Может быть кто-то сталкивался с такой проблемой...
Сама база имеет 3 таблицы


0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.10.2015, 00:46
Ответы с готовыми решениями:

БД Access + ADO + MY SQL
у меня уже есть база данных (сделана в Access), даже есть формочки сделанные в делфи, соединила таблицы между собой (AdoConnection,...

Delphi и SQL (ADO, Access)
Здравствуйте. Возникла такая проблема: Использую Access через ADO. Создаю новое поле (столбец) в бд: CurDate:=DateToStr(Now); for i...

Delphi+ADO+access SQL запрос
Добрый день уважаемые програмисты!. Помогите разобраться. Есть таблица в Аксесе: Data Doxod Rasxod Необходимо произвести...

38
 Аватар для Shura_deg
83 / 19 / 5
Регистрация: 01.02.2015
Сообщений: 655
19.10.2015, 11:16  [ТС]
Студворк — интернет-сервис помощи студентам
да сори что сразу не сказал...
база в Access
формат даты - кароткий формат поля 21.05.2015
работающий для моей базы SQL запрос 100%
SQL
1
2
3
SELECT *
FROM Zakazi
WHERE ДатаЗаказа=#22/02/2015#;
0
5967 / 4543 / 1094
Регистрация: 29.08.2013
Сообщений: 28,155
Записей в блоге: 3
19.10.2015, 11:25
ну не знаю сделай так
Delphi
1
'select *from [] where date=#'+dayof()+'/'+monthof()+'/'+yearof()+'#;'
в скобках свою дату
0
554 / 484 / 191
Регистрация: 11.12.2013
Сообщений: 2,507
19.10.2015, 11:39
чтобы не было проблем с датами и прочим - нужно использовать параметры.
Delphi
1
2
3
4
5
6
with Query1 do begin
  Close;
  SQL.Text:='SELECT * FROM имя таблицы(таблиц) WHERE DATA=:DATA;';
  Parameters[0].Value:=значение параметра(с типом дата);
  Open;
end;
0
 Аватар для Shura_deg
83 / 19 / 5
Регистрация: 01.02.2015
Сообщений: 655
19.10.2015, 11:42  [ТС]
возможно будет работать ща проверю только вот нужно чтобы данные брались из какого-нибудь компонента
типа edit или DateTimePicker1 или ещё как-нибудь..!

Добавлено через 48 секунд
а в вашем случае придётся вручную вводит, метод конечно хороший но мне не совсем подходит
0
554 / 484 / 191
Регистрация: 11.12.2013
Сообщений: 2,507
19.10.2015, 11:43
не понял чем не подходит мой способ, кто мешает значение параметра брать из переменной? или из edit1:
Delphi
1
Parameters[0].Value:=StrToDate(Edit1.Text);
0
 Аватар для Shura_deg
83 / 19 / 5
Регистрация: 01.02.2015
Сообщений: 655
19.10.2015, 13:59  [ТС]
Цитата Сообщение от Алекcей Посмотреть сообщение
Parameters[0].Value:=StrToDate(Edit1.Text);
можно поподробнее об этом способе!
и разве можно Edit1.text преобразовывать в дату??? много где писали что нельзя
а что именно подразумеваеться под Parameters[0]
что вместо этого нужно писать?
0
554 / 484 / 191
Регистрация: 11.12.2013
Сообщений: 2,507
19.10.2015, 14:11
можно посмотреть где написано что нельзя преобразовывать string в TDate? Конечно, правильнее использовать TDateTimePicker или на худой конец проверять можно ли преобразовать текст из TEdit в дату (TryStrToDate(Edit1.Text,dat)). насчет Parameters[0] не понял, что значит что писать?
1
5967 / 4543 / 1094
Регистрация: 29.08.2013
Сообщений: 28,155
Записей в блоге: 3
19.10.2015, 14:30
Parameters это массив параметров которые вы передаете в запрос
[0] - это номер параметра, так как нумерация с нуля
1
 Аватар для Shura_deg
83 / 19 / 5
Регистрация: 01.02.2015
Сообщений: 655
19.10.2015, 15:17  [ТС]
как именно задать этот запрос????
при вводе такого кода
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TfMain.Edit1Change(Sender: TObject);
begin
 if Edit1.Text <> '' // пользователь ввел инф
 then begin
 fDM.ADOQuery1.Close; // закрыть файл-результат выполнения предыдущего запроса
 fDM.ADOQuery1.SQL.Clear; // удалить текст предыдущего запроса
 // записываем новый запрос в свойство SQL
 Parameters[0].Value:=StrToDate(Edit1.Text);
 fDM.ADOQuery1.SQL.Text:='select * from Zakazi where ДатаЗаказа  = '+Parameters[0];
 fDM.ADOQuery1.Open; // активизируем выполнение запроса
 DBGrid1.DataSource:=fDM.DSQuery1;
end else
 DBGrid1.DataSource:=fDM.DSZakaziData;
end;
выскакивает ошибка!
Undeclared identifier: 'Parameters'
0
554 / 484 / 191
Регистрация: 11.12.2013
Сообщений: 2,507
19.10.2015, 15:37
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TfMain.Edit1Change(Sender: TObject);
var d: TDateTime;
begin
 if (Edit1.Text <> '') and (TryStrToDateTime(Edit1.Text, d)) // пользователь ввел инф
 then begin
  with fDM.ADOQuery1 do begin
    Close; // закрыть файл-результат выполнения предыдущего запроса
    SQL.Text:='select * from Zakazi where ДатаЗаказа  = :DATA'; // удалить текст предыдущего запроса
    Parameters[0].Value:=StrToDate(Edit1.Text);
    Open; // активизируем выполнение запроса
    DBGrid1.DataSource:=fDM.DSQuery1;
end else
 DBGrid1.DataSource:=fDM.DSZakaziData;
end;
1
 Аватар для Shura_deg
83 / 19 / 5
Регистрация: 01.02.2015
Сообщений: 655
26.10.2015, 00:00  [ТС]
пытаюсь сделать поиск в зависимости от кнопки на radiobutton
вот код
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
procedure TForm1.Edit1Change(Sender: TObject);
var
 strField:string;
begin
 if Edit1.Text <> '' // пользователь ввел инф
 then begin
  DBGrid1.DataSource:=fDM.DSQuery1;
   // вывести таблицу
  fDM.ADOQuery1.Close;
  fDM.ADOQuery1.SQL.Clear;
  fDM.ADOQuery1.SQL.Add('Select * from TovarMain');
  fDM.ADOQuery1.Open;
  // выбрать поле поиска
 case RadioGroup1.ItemIndex of
  0: strField:='Модель';
  1: strField:='Бренд';
  2: strField:='Вид';
  3: strField:='Тип';
  4: strField:='Стоимость';
 end;
 // выполнить поиск
 fDM.ADOQuery1.Close;
 fDM.ADOQuery1.SQL.Clear;
 fDM.ADOQuery1.SQL.Add('Select * from TovarMain where '+strField+'=' +Edit1.Text);
 fDM.ADOQuery1.Open;
 end;end;
Добавлено через 51 секунду
пишет параметр не имеет значения по умолчанию
0
5967 / 4543 / 1094
Регистрация: 29.08.2013
Сообщений: 28,155
Записей в блоге: 3
26.10.2015, 09:15
Shura_deg,может так?

Delphi
1
fDM.ADOQuery1.SQL.Add('Select * from TovarMain where '+strField+'='''' +Edit1.Text+''');
поиск лучше делать через LIKE
1
 Аватар для Shura_deg
83 / 19 / 5
Регистрация: 01.02.2015
Сообщений: 655
26.10.2015, 11:22  [ТС]
да, через LIKE действительно лучше, вот код для like может быть кому то нужен будет
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
procedure TForm1.Edit1Change(Sender: TObject);
var
 strField:string;
begin //start
 if not CheckBox1.Checked then Exit;
 if Edit1.Text <> '' // пользователь ввел инф
 then begin
 // выбрать поле поиска
 case RadioGroup1.ItemIndex of
  0: strField:='Model';
  1: strField:='Brend';
  2: strField:='Vid';
  3: strField:='Tip';
  4: strField:='Ctoimost';
 end;
 // выполнить поиск
 fDM.ADOQuery1.Close;                              // |
 fDM.ADOQuery1.SQL.Clear;                 //  ' LIKE "%'+Edit1.Text+'%"' - ищет фрагмент текста
 fDM.ADOQuery1.SQL.Add('Select * from TovarMain where '+strField+' LIKE "'+Edit1.Text+'%"');
 fDM.ADOQuery1.Open;
 fDM.ADOQuery1.FieldByName('Model').DisplayLabel:='Модель';
 fDM.ADOQuery1.FieldByName('Tip').DisplayWidth:=20;
 fDM.ADOQuery1.FieldByName('Vid').DisplayWidth:=20;
 DBGrid1.DataSource:=fDM.DSQuery1;
 end else begin
   // вывести таблицу
  fDM.ADOQuery1.Close;
  fDM.ADOQuery1.SQL.Clear;
  fDM.ADOQuery1.SQL.Add('Select * from TovarMain');
  fDM.ADOQuery1.Open;
  fDM.ADOQuery1.FieldByName('Model').DisplayLabel:='Модель';
  fDM.ADOQuery1.FieldByName('Tip').DisplayWidth:=20;
  fDM.ADOQuery1.FieldByName('Vid').DisplayWidth:=20;
  DBGrid1.DataSource:=fDM.DSQuery1;
 end;
 
end; //end
0
5967 / 4543 / 1094
Регистрация: 29.08.2013
Сообщений: 28,155
Записей в блоге: 3
26.10.2015, 11:28
Цитата Сообщение от Shura_deg Посмотреть сообщение
fDM.ADOQuery1.SQL.Add('Select * from TovarMain where '+strField+' LIKE "'+Edit1.Text+'%"');
второй % вижу, а где первый?

ЗЫ аццкая смесь DBGrid и SQL. Используйте уже Stringgrid. Он лучше. Честно.
0
 Аватар для Shura_deg
83 / 19 / 5
Регистрация: 01.02.2015
Сообщений: 655
26.10.2015, 21:18  [ТС]
Цитата Сообщение от qwertehok Посмотреть сообщение
второй % вижу, а где первый?
всм зачем 2?
Цитата Сообщение от qwertehok Посмотреть сообщение
Используйте уже Stringgrid. Он лучше. Честно.
не сомневаюсь, но у меня задача через dbgrid.....
0
5967 / 4543 / 1094
Регистрация: 29.08.2013
Сообщений: 28,155
Записей в блоге: 3
26.10.2015, 21:27
вы сами пишите два %
Цитата Сообщение от Shura_deg Посмотреть сообщение
// *' LIKE "%'+Edit1.Text+'%"' - ищет фрагмент текста
процент это случайные символы, аналог *
0
 Аватар для Shura_deg
83 / 19 / 5
Регистрация: 01.02.2015
Сообщений: 655
28.10.2015, 19:43  [ТС]
Связь ADOTabel, ADOConnection, DataSourse
сделал процедуру для ComboBox
Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
if ComboBox1.ItemIndex = 0 then
DBGrid1.DataSource := fDM.DSTovarMainData;
if ComboBox1.ItemIndex = 1 then
DBGrid1.DataSource := fDM.DSPokupatelData;
if ComboBox1.ItemIndex = 2 then
DBGrid1.DataSource := fDM.DSotchetData;
if ComboBox1.ItemIndex = 3 then
DBGrid1.DataSource := fDM.DSckladData;
end;
Меняются данные для DBGRID1 (сверху таблица на картинке)

Когда при помощи процедуры procedure TForm1.ComboBox1Change я меняю данные для таблицы, в таблице почему то выводится только одна строчка хотя в базе данных в Access их несколько минимум по 3
ВОПРОС:
Как сделать что бы выводились все данные таблицы и была связь с таблицей DBGrid
(связь настраивал ADOTable MasterFaeld, MasterSourse)
вот примеры данного недуга!

ХОТЬ ПРИМЕРНО ПОДСКАЖИТЕ КУДА СМОТРЕТЬ!
0
5967 / 4543 / 1094
Регистрация: 29.08.2013
Сообщений: 28,155
Записей в блоге: 3
28.10.2015, 22:34
рестарт ADOConnection помогает?
0
 Аватар для Shura_deg
83 / 19 / 5
Регистрация: 01.02.2015
Сообщений: 655
28.10.2015, 23:02  [ТС]
Цитата Сообщение от qwertehok Посмотреть сообщение
рестарт ADOConnection помогает?
неа

Добавлено через 9 минут
решил проблему путём
Delphi
1
fDM.TPokupatelData.MasterFields:='';
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.10.2015, 23:02
Помогаю со студенческими работами здесь

Удаление записей Delphi - Ado - Access через SQL Between
Доброго времени суток. БД - для учета школьных олимпиад. Нужно написать запрос для удаления олимпиад по каждому уч. году. Пример ...

Изменить базу данных ADO MS Access в MS SQL Server 2008R
Добрый день! Имеется программа написанная в Delphi7 с базой данных по технологии ADO в Microsoft Access, необходимо заменить на БД...

ADO+MS SQL: как узнать количество обработанных строк при insert в ADO Query?
Добрый день. При выполнении запроса в MS SQL insert into ..(,,) select 0,20,'Text' where not exists (select 1 from .. where...

Access + ADO
Здравствуйте! Есть база Access, в базе всего одна таблица, скажем TBL. Интерфейс для ввода-редактирования данных пишется на Delphi....

MS Access/ADO
Добрый день. При запуске программы выплывает ошибка File not found: XPGroupBox.dcu В чем может быть проблема? Способ доступа к бд...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
39
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru