Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Экспорт данных из БД в Excel или Отчет, Отчет из БД 
V
    Опции темы
mamed05
Дата 21.4.2009, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здрасте!
Делаю курсач "учета поступления материалов на склад".

Вот пример моей программы:
user posted image

На форме имеются компоненты: TDateTimePicker, TTable, TDataSourse, TDBGrid и TDBNavigator и т.д.

Задача заключается в следующем: 
  •  Из имеющейся базы мне нужно отобрать материалы за сегодняшний день.
  •  И на основании этих данных создать отчет вида "Приходной ордер (М-4)" (Файл  вложен). Экспортировать ли его в Excel или можно как обычный отчет QuickReport? И как именно?  smile
 
Помогите пожалуйста!  smile 

Принимается любая помошь!  smile 


Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  Prihodnoj_order__m4_.doc 74,00 Kb
PM MAIL   Вверх
mrbrooks
Дата 21.4.2009, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

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



Цитата(mamed05 @  21.4.2009,  00:50 Найти цитируемый пост)
 Из имеющейся базы мне нужно отобрать материалы за сегодняшний день.

SQL - запросом. Используй TQuery.
Цитата(mamed05 @  21.4.2009,  00:50 Найти цитируемый пост)
можно как обычный отчет QuickReport?

я бы сделал именно так.

Цитата(mamed05 @  21.4.2009,  00:50 Найти цитируемый пост)
И как именно?

Камрад. Читай спец.литературу. Не ленись. Не такие уж и объемные книги по БД в Бормане

вот для затравки мануальчеГ
PM MAIL   Вверх
Лапоть
Дата 21.4.2009, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



ИМХО - хранить цену в виде строки (27 000,00р.) - это гарантированный геморрой при дальнейшем вычислении стоимости.
PM MAIL   Вверх
mamed05
  Дата 22.4.2009, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вот такая загвоздка возникла теперь:

Код

Query1->Close();
Query1->SQL->Strings[3]="WHERE Products."Date"="+DateTimePicker1->Date.CurrentDate();
Query1->Open();


Нужно чтоб в этом слове Products."Date"   он перенес эти кавычки в SQL запрос.
Как это сделать?
PM MAIL   Вверх
Лапоть
Дата 22.4.2009, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Вот тестик с пикером, кнопкой и эдитом:
Код

void __fastcall TForm1::Button3Click(TObject *Sender) {
  char buf[64];
  sprintf(buf, "WHERE Products.\"Date\" = %s", String(DateTimePicker1->Date.CurrentDate()));
  Edit1->Text = String(buf);
}

Не забудь приинклюдить stdio.h
PM MAIL   Вверх
mrbrooks
Дата 23.4.2009, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

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



Лапоть, если уж на то пошло, то проще так:
Код

void __fastcall TForm1::Button3Click(TObject *Sender) 
{
   Edit1->Text = String().sprintf("WHERE Products.\"Date\" = %s", DateTimePicker1->DateString());
}

Если используем CG 2009 то соответственно не забываем про L.

mamed05
Код

Query1->Close();
Query1->SQL->Strings[3]="WHERE Products.\"Date\"="+DateTimePicker1->DateString();
Query1->Open();


Только не стоит забывать, что при формировании запроса его надо очищать от предыдущего. Это я к тому, что содержит список от Strings[0] ... Strings[2]? Один мощный SELECT  smile 
PM MAIL   Вверх
Лапоть
Дата 23.4.2009, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(mrbrooks @  23.4.2009,  09:20 Найти цитируемый пост)
Лапоть, если уж на то пошло, то проще так:
Согласен! Но никак не избавлюсь от того, к чему когда-то привык smile 

PM MAIL   Вверх
mrbrooks
Дата 23.4.2009, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

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



Цитата(Лапоть @  23.4.2009,  10:45 Найти цитируемый пост)
Согласен! Но никак не избавлюсь от того, к чему когда-то привык

Кстати очень дельное замечание. Поддержка так сказать некой кроссплатформенности  smile 
PM MAIL   Вверх
mamed05
Дата 23.4.2009, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Почему он так ругается?

user posted image


Код

Query1->Close();
Query1->SQL->Strings[0]="SELECT ProductNo, PostNo, Name, Products.\"Index\", Ed_izmer, Kol, KolDoc, Price, Products.\"Date\"";
Query1->SQL->Strings[1]="FROM Products";
Query1->SQL->Strings[2]="WHERE Products.\"Date\"="+DateTimePicker1->Date.CurrentDate();
Query1->Open();

PM MAIL   Вверх
azesmcar
Дата 23.4.2009, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

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



mamed05

потому что вышел за пределы массива..это не ПХП в конце концов smile 

Код

Query1->Close();
Query1->SQL->Lines->Add("SELECT ProductNo, PostNo, Name, Products.\"Index\", Ed_izmer, Kol, KolDoc, Price, Products.\"Date\"");
Query1->SQL->Lines->Add("FROM Products");
Query1->SQL->Lines->Add("WHERE Products.\"Date\"="+DateTimePicker1->Date.CurrentDate());
Query1->Open();

если правильно помню

PM   Вверх
Лапоть
Дата 23.4.2009, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код

Query1->Close();
Query1->SQL->Clear();  // очисти то, что там уже может быть!
Query1->SQL->Add("SELECT ProductNo, PostNo, Name, Products.\"Index\", Ed_izmer, Kol, KolDoc, Price, Products.\"Date\"");
Query1->SQL->Add("FROM Products");
Query1->SQL->Add("WHERE Products.\"Date\"="+DateTimePicker1->Date.CurrentDate());
Query1->Open();

PM MAIL   Вверх
mamed05
  Дата 23.4.2009, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Без Lines прокатило но не с DateTimePicker1->Date.CurrentDate()

По полю PostNo отсортировать получилось.
Код

Query1->Close();
Query1->SQL->Add("SELECT ProductNo, PostNo, Name, Products.\"Index\", Ed_izmer, Kol, KolDoc, Price, Products.\"Date\"");
Query1->SQL->Add("FROM Products");
Query1->SQL->Add("WHERE PostNo=1");
Query1->Open();


А по полю Products."Date" выдает ошибку.
Код

Query1->Close();
Query1->SQL->Add("SELECT ProductNo, PostNo, Name, Products.\"Index\", Ed_izmer, Kol, KolDoc, Price, Products.\"Date\"");
Query1->SQL->Add("FROM Products");
Query1->SQL->Add("WHERE Products.\"Date\"="+DateTimePicker1->Date.CurrentDate());
Query1->Open();


user posted image


По идее DateTimePicker1->Date.CurrentDate() должен выдать дату в формате 23.04.2009
А в ошибке только 23.04
Кажется ошибка возникает из-за точек в дате.
Что тут можно сделать?



PM MAIL   Вверх
mrbrooks
Дата 23.4.2009, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

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



mamed05, я же тебе привел пример выше по поводу времени в виде строки.

Код

Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("SELECT ProductNo, PostNo, Name, Products.\"Index\", Ed_izmer, Kol, KolDoc, Price, Products.\"Date\"");
Query1->SQL->Add("FROM Products");
Query1->SQL->Add("WHERE Products.\"Date\"="+DateTimePicker1->DateString());
Query1->Open();


будь бдителен.
PM MAIL   Вверх
mamed05
Дата 23.4.2009, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Стараюсь быть бдительным! Я ведь уже проверял этот метод smile 

user posted image

А когда пишу DateTimePicker1->Date.DateString() получается подобие этого:
user posted image

Но только с датой 18.04. Кстати mrbrooks, как раз это значение мне и нужно было! smile 

Но проблема все еще не решена  smile 

Это сообщение отредактировал(а) mamed05 - 23.4.2009, 17:07
PM MAIL   Вверх
Лапоть
Дата 24.4.2009, 07:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Похоже, собака порылась вот в чём - у тебя запрос на выборку из единственной таблицы Products, так зачем ты лепишь имена в виде Таблица.Имя_поля? Далее - Инвалид юз оф Киворд - скорее всего слово Date для твоей СУБД (что за сервер, кстати?) - служебное. Поэтому либо поменяй название колонки, либо пиши его в квадратных скобках [Date].

Цитата(mamed05 @  23.4.2009,  17:14 Найти цитируемый пост)
Без Lines прокатило 
Вместо плясок с бубном советую хоть изредка в хэлпы поглядывать smile 


Это сообщение отредактировал(а) Лапоть - 24.4.2009, 07:11
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C++: Базы данных"
chipset

Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах.

Благодарим за понимание.


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

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


 




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


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

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