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

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

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

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

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

ADO, Access, SQL, Магазин
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.10.2015, 00:46
Ответы с готовыми решениями:

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

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

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

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

38
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,130
Записей в блоге: 3
18.10.2015, 01:21 2

Все программисты сталкиваются с проблемой - интерфейса и SQL скриптов

что именно нужно вам. Опишите задание и ваши мысли.
0
83 / 19 / 5
Регистрация: 01.02.2015
Сообщений: 655
18.10.2015, 18:14  [ТС] 3
создал вот такую БД
ADO, Access, SQL, Магазин

нужно организовать поиск с помощью компонента ADOQuery
есть код для просто Query, не для моей таблицы, что нужно поменять?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 if not CheckBox2.Checked then Exit;
 // выбрать поле поиска
 case RadioGroup1.ItemIndex of
  0: strField:='NameDis';
  1: strField:='Prepod';
  2: strField:='WeekDay';
 end;
 // выполнить поиск
 Query1.Close;                              // |
 Query1.SQL.Clear;                 //  ' LIKE "%'+Edit3.Text+'%"' - ищет фрагмент текста
 Query1.SQL.Add('Select * from kurs_predm.db where '+strField+' LIKE "'+Edit3.Text+'%"');
 Query1.Open;
 Query1.FieldByName('NameDis').DisplayLabel:='Наименование дисциплины';
 Query1.FieldByName('Prepod').DisplayLabel:='Преподаватель';
 Query1.FieldByName('WeekDay').DisplayLabel:='День недели';
 Query1.FieldByName('DisTime').DisplayLabel:='Время';
последние 4 строчки для чего они?
вот сама БД
2ADO.rar
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,130
Записей в блоге: 3
18.10.2015, 19:23 4
квери это такая штука которая, используя подключение к БД, умеет, с помощью запроса, выбирать данные и хранит их.
Соответственно
Close - закрыть старое соединение
SQL.Clear - очистить старый запрос
SQL.Add - добавить новый запрос
Open - Выполнить запрос

Далее делаете так
проверяем есть ли данные вообще
Delphi
1
2
3
4
5
if Query.recordCount>0 then begin
Edit1.Text:=Query.Fields[0].asString; 
// в Эдит пишем данные из колонки 0. Колонки берутся из запроса SELECT
 
end
Поля в квери можно брать как по порядку
Query.Fields[0]
Так и по имени
Query.FieldsByName['имя поля']

Далее после точки указываем тип поля - asString\asInteger\ и тд
1
83 / 19 / 5
Регистрация: 01.02.2015
Сообщений: 655
18.10.2015, 21:32  [ТС] 5
вот есть запрос
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
procedure TfMain.BitBtn1Click(Sender: TObject);
begin
  ADOQuery1.Filter := ADOQuery1.FieldByName('code').FullName + ' = ' +
      QuotedStr(Edit1.Text);
  if ADOQuery1.Filtered then
  begin
    BitBtn1.Caption := 'Filter On';
    ADOQuery1.Filtered := false;
  end
  else
  begin
    BitBtn1.Caption := 'Filter Off';
    ADOQuery1.Filtered := true;
  end;
end;
 
end;
Добавлено через 26 секунд
не работает

Добавлено через 1 минуту
Почему не работает этот запрос
fDM.ADOQuery1.First;
по идее должен ставить указатель на первое поле в таблице
посему то не работает , поместил этот запрос в кнопку
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,130
Записей в блоге: 3
18.10.2015, 21:55 6
почему вы не пишите что именно не работает?

Delphi
1
fDM.ADOQuery1.First;
не на первое поле, а на первую строку. это НЕВИЗУАЛЬНЫЙ компонент, поэтому вы не видите что оно на первой строке.
1
83 / 19 / 5
Регистрация: 01.02.2015
Сообщений: 655
18.10.2015, 22:21  [ТС] 7
вот моя база данных пожалуйста помогите организовать поиск по дате!
я уже всё перепробовал почему то всё время сплошные ошибки
2ADO.rar
ADO, Access, SQL, Магазин
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,130
Записей в блоге: 3
18.10.2015, 22:49 8
Shura_deg,
а что тут искать? такой же запрос 'SELECT * from [] where date='''+Edit1.text+''' order by []'

у вас в базе как дата забита? как DateTime?
1
83 / 19 / 5
Регистрация: 01.02.2015
Сообщений: 655
18.10.2015, 22:54  [ТС] 9
да например 23.05.2015
а можно это всё именно как точно прописывается в коде?

Добавлено через 2 минуты
у меня почему то такая ошибка
соединил ADOConeting1 с ADOQuery c DataSet и DBGrid
и почему то не отображаются данные в DBGrid
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,130
Записей в блоге: 3
18.10.2015, 22:57 10
Цитата Сообщение от Shura_deg Посмотреть сообщение
а можно это всё именно как точно прописывается в коде?
как так точно?
я не понимаю

Добавлено через 2 минуты
Цитата Сообщение от Shura_deg Посмотреть сообщение
соединил ADOConeting1 с ADOQuery c DataSet и DBGrid
насколько я помню так же разные связки
ADOConeting1 - DataSet - DBGrid
ADOConeting1 - ADOQuery - DBGrid
0
83 / 19 / 5
Регистрация: 01.02.2015
Сообщений: 655
18.10.2015, 23:11  [ТС] 11
Цитата Сообщение от qwertehok Посмотреть сообщение
как так точно?
я не понимаю
в плане того что к чему привязывается, если можно
вот мой код, если есть минутка посмотрите плз
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
unit Main;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Grids, DBGrids, Buttons, DBCtrls;
 
type
  TfMain = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Splitter1: TSplitter;
    Panel3: TPanel;
    Panel4: TPanel;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    Bevel1: TBevel;
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    BitBtn1: TBitBtn;
    Bevel2: TBevel;
    DBGrid1: TDBGrid;
    DBGrid2: TDBGrid;
    CheckBox1: TCheckBox;
    RadioGroup1: TRadioGroup;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    procedure RadioButton2Click(Sender: TObject);
    procedure RadioButton3Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  fMain: TfMain;
 
implementation
 
uses DM;
 
{$R *.dfm}
 
procedure TfMain.RadioButton2Click(Sender: TObject);
begin
if RadioButton2.Checked then
    DBGrid2.DataSource := fDM.DSKlientData;
end;
 
procedure TfMain.RadioButton3Click(Sender: TObject);
begin
if RadioButton3.Checked then
    DBGrid2.DataSource := fDM.DSTovarData;
end;
 
procedure TfMain.CheckBox1Click(Sender: TObject);
begin
 if CheckBox1.Checked=true
 then
  begin
   CheckBox1.Caption:='Режим поиска включен';
   Edit3.SetFocus;
  end
 else CheckBox1.Caption:='Режим поиска выключен';
end;
 
end.
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,130
Записей в блоге: 3
18.10.2015, 23:24 12
я все равно не вижу проблем

вы делайте, а если есть ошибки или вопросы сначала спросите яндекс. работа как с ADO, так и с BDE есть в инете. Быстрее прочитать чем сюда писать вопросы.
0
83 / 19 / 5
Регистрация: 01.02.2015
Сообщений: 655
19.10.2015, 09:47  [ТС] 13
как сделать что бы с Edit1 брался поиск по дате? нужны ли какие-нибудь маски?
вот сам запрос
SQL
1
2
3
SELECT *
FROM Zakazi
WHERE ДатаЗаказа=#22/02/2015#;
работающий для одной даты а как сделать что бы эта дата бралась из Edit
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,130
Записей в блоге: 3
19.10.2015, 10:07 14
Shura_deg, я же написал

Delphi
1
'SELECT * from [имя_таблицы] where date='''+Edit1.text+''' order by [имя поля]'
1
83 / 19 / 5
Регистрация: 01.02.2015
Сообщений: 655
19.10.2015, 10:32  [ТС] 15
Цитата Сообщение от qwertehok Посмотреть сообщение
'
Delphi
1
SELECT * from [имя_таблицы] where date='''+Edit1.text+''' order by [имя поля]
'
выдаёт ошибку!
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,130
Записей в блоге: 3
19.10.2015, 10:35 16
Shura_deg,
очень содержательно
0
83 / 19 / 5
Регистрация: 01.02.2015
Сообщений: 655
19.10.2015, 10:42  [ТС] 17
вот мой код
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TfMain.BitBtn1Click(Sender: TObject);
begin
 if Edit1.text <> '' // пользователь ввел инф
 then begin
 fDM.ADOQuery1.Close; // закрыть файл-результат выполнения предыдущего запроса
 fDM.ADOQuery1.SQL.Clear; // удалить текст предыдущего запроса
 // записываем новый запрос в свойство SQL
 fDM.ADOQuery1.SQL.Add('SELECT *');
 fDM.ADOQuery1.SQL.Text:='select * from Zakazi where ДатаЗаказа  = :p1';
 fDM.ADOQuery1.ParamByName('p1').AsDate:=DateTimePicker1.Date;
 fDM.ADOQuery1.Open; // активизируем выполнение запроса
 DBGrid1.DataSource:=fDM.DSQuery1;
end else
 DBGrid1.DataSource:=fDM.DSZakaziData;
end;
Добавлено через 27 секунд
ругается на ParamByName

Добавлено через 1 минуту
если 3ю строку заменить с
if Edit1.text <> '' // пользователь ввел инф (то что не так должно быть)
то что надо
if p1 <> ''
то выдаёт ошибку

Добавлено через 4 минуты
вот заработало! только выдаёт ошибку
несоответствие типов данных в выражении условия отбора!
вот такой код
Delphi
1
2
3
4
5
6
7
8
9
 if Edit1.text <> '' // пользователь ввел инф
 then begin
 fDM.ADOQuery1.Close; // закрыть файл-результат выполнения предыдущего запроса
 fDM.ADOQuery1.SQL.Clear; // удалить текст предыдущего запроса
 // записываем новый запрос в свойство SQL
 fDM.ADOQuery1.SQL.Text:='select * from Zakazi where ДатаЗаказа  = :p1';
 fDM.ADOQuery1.Parameters.ParamByName('p1').Value:=DateTimePicker1.Date;
 fDM.ADOQuery1.Open; // активизируем выполнение запроса
 DBGrid1.DataSource:=fDM.DSQuery1;
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,130
Записей в блоге: 3
19.10.2015, 10:44 18
Shura_deg,
что то я не понял про Эдит. Несмотря на то что пользователь ввел данные ты все равно дату берешь из DateTimePicker1 .

Попробуй без параметра сделать так как я написал.
0
83 / 19 / 5
Регистрация: 01.02.2015
Сообщений: 655
19.10.2015, 10:52  [ТС] 19
Цитата Сообщение от qwertehok Посмотреть сообщение
Попробуй без параметра сделать так как я написал.
несоответствие типов данных - ошибка
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,130
Записей в блоге: 3
19.10.2015, 11:12 20
ты в какой базе хранишь? ms sql? oracle?

формат даты в разных базах разный
нужно сначала написать правильный запрос в редакторе для твой БД, а потом мой модифицировать

ЗЫ мой запрос для SQLITE работает. для MSSQL нужно дату писать в виде ГОДМЕСЯЦДЕНЬ, для другий по другому
0
19.10.2015, 11:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.10.2015, 11:12
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru