Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
Didilom
4 / 4 / 0
Регистрация: 23.01.2013
Сообщений: 92
1

Запросы: отчет о сделанной работе

27.04.2013, 17:24. Просмотров 738. Ответов 10
Метки нет (Все метки)

Доброго времени суток всем!! Хотел спросить, вот я хочу чтобы при выборе "фамилия" и "даты" мне выдавала отчет о сделанной работе сотрудника.
Запросы: отчет о сделанной работе


Вот прописал код для sComboBox1, для списка фамилий
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void __fastcall TForm5::sComboBox1DropDown(TObject *Sender)
{
Form1->ADOTable1->Filtered=false;
sComboBox1->Items->Clear();
Form1->ADOTable1->First();
for (int i=0; i<Form1->ADOTable1->RecordCount; i++)
 
{
sComboBox1->Items->Add(Form1->ADOTable1->Fields->Fields[1]->AsString);
Form1->ADOTable1->Next();
}
 
}


И для кнопки Поиск

C++
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
void __fastcall TForm5::sComboBox1DropDown(TObject *Sender)
{
Form1->ADOTable1->Filtered=false;
sComboBox1->Items->Clear();
Form1->ADOTable1->First();
for (int i=0; i<Form1->ADOTable1->RecordCount; i++)
 
{
sComboBox1->Items->Add(Form1->ADOTable1->Fields->Fields[1]->AsString);
Form1->ADOTable1->Next();
}
 
}
//---------------------------------------------------------------------------
 
void __fastcall TForm5::sBitBtn1Click(TObject *Sender)
{
// Г*Г* ГґГ*ìèëèå
Form1->ADOQuery1->Close();
Form1->ADOQuery1->SQL->Clear();
Form1->ADOQuery1->SQL->Add("SELECT Sotrudniki.Tab_nomer, Sotrudniki.Famil, Sotrudniki.Name, Sotrudniki.Otchestvo, Sotrudniki.Dolghnost, Sotrudniki.Razryad, Sotrudniki.Foto FROM Sotrudniki WHERE (((Sotrudniki.Famil) Like '%"+sComboBox1->Text +"%'));");
Form1->ADOQuery1->Open();
if (Form1->ADOQuery1->RecordCount==0)
{Application->MessageBoxA("ГЌГҐГІ Г§Г*ГЇГЁГ±ГҐГ©","Г‚Г*ГЁГ¬Г*Г*ГЁГҐ",MB_OK);
Form1->DataSource1->DataSet=Form1->ADOTable1;
}
else
{Form1->DataSource1->DataSet=Form1->ADOQuery1;}
 
 
// Г*Г* Г¤Г*ГІГі
 
 
Form1->ADOQuery2->SQL->Clear();
Form1->ADOQuery2->SQL->Text="SELECT Vipolnenie.Kod_vipoln, Vipolnenie.Data, Vipolnenie.Tab_nomer, Vipolnenie.Kod_detali, Vipolnenie.Kol-vo FROM Vipolnenie WHERE (((Vipolnenie.Data) Between :time1 And :time2));)";
Form1->ADOQuery2->Parameters->ParamByName("time1")->Value=sDateEdit1->Date.DateString();
Form1->ADOQuery2->Parameters->ParamByName("time2")->Value=sDateEdit2->Date.DateString();
 
Form1->ADOQuery2->Open();
if (Form1->ADOQuery2->RecordCount==0)
{Application->MessageBoxA("ГЏГ® Г§Г*Г¤Г*Г*Г*îìó ГЁГ*òåðâГ*ëó Г*ГЁГ·ГҐГЈГ® Г*ГҐ Г*Г*éäåГ*Г®!","Г‚Г*ГЁГ¬Г*Г*ГЁГҐ",MB_OK);
Form1->DataSource3->DataSet=Form1->ADOTable3;
}
else
{Form1->DataSource3->DataSet=Form1->ADOQuery2;
}
 
 
}
И он мне выдает ошибку "Обнаружены символы за пределами SQL"
Помогите пожалуйста разобраться, что это может быть?
Я смотрел, вроде все нома.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.04.2013, 17:24
Ответы с готовыми решениями:

Запросы: отчет по сотруднику в указанный интервал времени
Ребята можете помочь. Вот делаю проект в С++ builder, Вот для комбобокс...

Корректное подключение к БД, сделанной в Interbase, из Builder C++ 6.0
Здравствуйте! Я пишу приложение, которое подключается к БД, сделанной в...

В XE4 ошибки с компиляцией программы сделанной в XE
в XE4 ошибки с компиляцией программы сделанной в XE! нажимаю компилировать и...

ЗАПРОСЫ & ОТЧЕТ В 1С 7.7
Ребята помогите мне разобраться вот с чем! Описание объекта автоматизации:...

Запросы и Отчет в Автопрокате автомобилей
Создал базу данных по Прокат Автомобилей. Нужна помощь , нужно создать Запросы...

10
The_Immortal
1560 / 496 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
27.04.2013, 17:29 2
Didilom,

Цитата Сообщение от Didilom Посмотреть сообщение
C++
1
Form1->ADOQuery1->SQL->Add("SELECT Sotrudniki.Tab_nomer, Sotrudniki.Famil, Sotrudniki.Name, Sotrudniki.Otchestvo, Sotrudniki.Dolghnost, Sotrudniki.Razryad, Sotrudniki.Foto FROM Sotrudniki WHERE Sotrudniki.Famil Like '%"+ sComboBox1->Text +"%'");
...
C++
1
Form1->ADOQuery2->SQL->Text="SELECT Vipolnenie.Kod_vipoln, Vipolnenie.Data, Vipolnenie.Tab_nomer, Vipolnenie.Kod_detali, Vipolnenie.Kol-vo FROM Vipolnenie WHERE Vipolnenie.Data Between :time1 And :time2";
0
Didilom
4 / 4 / 0
Регистрация: 23.01.2013
Сообщений: 92
27.04.2013, 23:08  [ТС] 3
Я прописал то что вы посоветовали, теперь другая ошибка
Запросы: отчет о сделанной работе
0
The_Immortal
1560 / 496 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
28.04.2013, 18:52 4
Didilom, какая СУБД?
Попробуйте убрать условие выборки (WHERE и все что после него).
И на каком конкретно запросе появляется данная ошибка?
0
Didilom
4 / 4 / 0
Регистрация: 23.01.2013
Сообщений: 92
28.04.2013, 20:49  [ТС] 5
Immortal, на Accesse делаю. Я даже не могу ответить на второй вопрос. Так как я запускаю эту форму и щелкаю на кнопку Поиск, он мне и выдает ошибку. На каком конкретно запросе дает ошибку я незнаю.
Вот чисто запрос 1 который беру с Accessa
C++
1
2
3
SELECT Sotrudniki.Tab_nomer, Sotrudniki.Famil, Sotrudniki.Name, Sotrudniki.Otchestvo, Sotrudniki.Dolghnost, Sotrudniki.Razryad, Sotrudniki.Foto
FROM Sotrudniki
WHERE (((Sotrudniki.Famil) Like "Иванов"));
2 запрос
C++
1
2
3
SELECT Vipolnenie.Kod_vipoln, Vipolnenie.Data, Vipolnenie.Tab_nomer, Vipolnenie.Kod_detali, Vipolnenie.[Kol-vo]
FROM Vipolnenie
WHERE (((Vipolnenie.Data) Between #4/1/2013# And #4/12/2013#));
Может я не так прописываю что то?
0
The_Immortal
1560 / 496 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
28.04.2013, 21:29 6
Didilom, в таком случае:

C++
1
Form1->ADOQuery2->SQL->Text="SELECT Vipolnenie.Kod_vipoln, Vipolnenie.Data, Vipolnenie.Tab_nomer, Vipolnenie.Kod_detali, Vipolnenie.[Kol-vo] FROM Vipolnenie WHERE Vipolnenie.Data Between :time1 And :time2";
0
Didilom
4 / 4 / 0
Регистрация: 23.01.2013
Сообщений: 92
28.04.2013, 21:39  [ТС] 7
Immortal, ведь я также и написал в самом начале, когда тему задавал и вопрос. Можете посмотреть может я там что не так написал?
0
The_Immortal
1560 / 496 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
28.04.2013, 21:45 8
Didilom, в общем, вставьте вот этот код и отпишитесь о результатах:

C++
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
// на фамилие
Form1->ADOQuery1->Close();
Form1->ADOQuery1->SQL->Clear();
Form1->ADOQuery1->SQL->Add("SELECT Sotrudniki.Tab_nomer, Sotrudniki.Famil, Sotrudniki.Name, Sotrudniki.Otchestvo, Sotrudniki.Dolghnost, Sotrudniki.Razryad, Sotrudniki.Foto FROM Sotrudniki WHERE Sotrudniki.Famil Like '%"+ sComboBox1->Text +"%'");
Form1->ADOQuery1->Open();
if (Form1->ADOQuery1->RecordCount==0)
{Application->MessageBoxA("Нет записей","Внимание",MB_OK);
Form1->DataSource1->DataSet=Form1->ADOTable1;
}
else
{Form1->DataSource1->DataSet=Form1->ADOQuery1;}
 
 
// на дату
 
 
Form1->ADOQuery2->SQL->Clear();
Form1->ADOQuery2->SQL->Text="SELECT Vipolnenie.Kod_vipoln, Vipolnenie.Data, Vipolnenie.Tab_nomer, Vipolnenie.Kod_detali, Vipolnenie.[Kol-vo] FROM Vipolnenie WHERE Vipolnenie.Data Between :time1 And :time2";
Form1->ADOQuery2->Parameters->ParamByName("time1")->Value=sDateEdit1->Date.DateString();
Form1->ADOQuery2->Parameters->ParamByName("time2")->Value=sDateEdit2->Date.DateString();
 
Form1->ADOQuery2->Open();
if (Form1->ADOQuery2->RecordCount==0)
{Application->MessageBoxA("По заданному интервалу ничего не найдено!","Внимание",MB_OK);
Form1->DataSource3->DataSet=Form1->ADOTable3;
}
else
{Form1->DataSource3->DataSet=Form1->ADOQuery2;
}
1
Didilom
4 / 4 / 0
Регистрация: 23.01.2013
Сообщений: 92
28.04.2013, 21:49  [ТС] 9
Immortal, все заработало, спасибо!
0
The_Immortal
1560 / 496 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
28.04.2013, 21:53 10
Didilom,
Цитата Сообщение от Didilom Посмотреть сообщение
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Экспрессию лучше отставить, а то так все эмоции спустите в процессе программирования


Цитата Сообщение от Didilom Посмотреть сообщение
что не так написал?
Поле "Kol-vo" надо было обременить квадратным скобочками. Я как-то сразу не узрел этот момент
0
Didilom
4 / 4 / 0
Регистрация: 23.01.2013
Сообщений: 92
28.04.2013, 22:04  [ТС] 11
Просто делаю диплом, и сроки маленькие остались. А квадратные скобки я сам убрал, думал это лишнее, ведь они только где Kol-vo и все. Ну вам спасибо большое.
1
28.04.2013, 22:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.04.2013, 22:04

Как объединить запросы в один отчет?
Помогите пожалуйста, в access надо сделать отчет статистический по строкам...

Отчет о проводимой работе за день
Здравствуйте друзья. Встала задача вести отчет по проделанной работе за день...

Отчет по работе (2 минуты работы)
Нужно по готовой работе только сделать отчет, а именно:Отгрузки прошлого года,...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru