Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.07.2010, 08:23   #11
М_Виктор
Пользователь
 
Регистрация: 18.09.2009
Сообщений: 49
По умолчанию

Цитата:
Сообщение от Sparky Посмотреть сообщение
блин а зачем такие огороды городить? Намного удобнее выучить хоть чуть-чуть SQL, обратите внимание на код Serge_Bliznykov
Если человек только-только начал изучать Delphi, то подсказка должна быть предельно простой и разложенной по полочкам (иначе может получиться решение задачи методом "интригала" как в фильме про Электроника). К сожалению, не все операторы языка SQL работают со всеми без исключения типами б.д.
М_Виктор вне форума Ответить с цитированием
Старый 15.07.2010, 09:10   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
К сожалению, не все операторы языка SQL работают со всеми без исключения типами б.д.
поясните, что означает - "со всеми типами БД" ?!
Имеются в виду типы данных? Или различные СУБД?

Ну есть СУБД, которые SQL не поддерживают.. но, к счастью, таким чрезвычайно мало, к тому же, подобные СУБД — это прямой кандидат в топку..


Цитата:
Если человек только-только начал изучать Delphi, то подсказка должна быть предельно простой и разложенной по полочкам
с этим согласен. Хотя, конечно, разжёвывать нужно, но до определённого предела...

to Епгений
СУБД какая?

попробуйте кинуть на форму ещё один Query (туда же, в DataModule2, рядышком с FindQuery ) Дайте ему имя, например, QFlgCount

на кнопку повесить такой код (пишу прямо здесь, могут быть мелкие неточности):
Код:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
  i:=0;
  DataModule2.QFlgCount.Close;
  DataModule2.QFlgCount.SQL.Clear;
  DataModule2.QFlgCount.SQL.Add('select count(*) as Cnt from имяТаблицы where ФЛГ=''Да'' ');
  DataModule2.QFlgCount.Open;
  i := DataModule2.QFlgCount.FieldByName('Cnt').AsInteger;
  DataModule2.QFlgCount.Close;
  MessageDlg('кол-во прошедших ФЛГ = '+IntToStr(i), mtInformation,[mbOk],0)
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.07.2010, 13:54   #13
М_Виктор
Пользователь
 
Регистрация: 18.09.2009
Сообщений: 49
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
поясните, что означает - "со всеми типами БД" ?!
Имеются в виду типы данных? Или различные СУБД?

Ну есть СУБД, которые SQL не поддерживают.. но, к счастью, таким чрезвычайно мало, к тому же, подобные СУБД — это прямой кандидат в топку..
Ну вот, например, пару дней назад обсуждалось возможность добавления полей в существующую базу.
Для своих файлов Paradox.db я использовал "конструкцию" типа

Query.SQL.Add('ALTER TABLE "Table2.db" ADD NNNN Character(20)');

С помощью SQL можно было бы и переименовывать таблицы типа

Query.SQL.Add('ALTER TABLE Table2.db RENAME TO Table222.db');

Но для файлов Paradox.db и DBase.dbf такая вещь лично у меня не срабатывает. Есть операторы MODIFY и CHANGE, которые могут менять тип конкретного поля в базе или его имя, но опять же это не подходит для Paradox.db и DBase.dbf.

Что касается топки, то все зависит от финансовых возможностей и желания руководителей предприятия. Например, у нас еще несколько месяцев будут работать программы, написанные на Clippere 5.5 более 20 лет назад и работающие под MS-DOS. Чтобы запустить их в WinXP пришлось повозиться. С другой стороны идет внедрение 1С.Предприятие 8, а стретьей стороны покупаются ноутбуки за 100.000 руб с Windows 7 Home Premium (64-х разрядная) и чтобы ВСЕ РАБОТАЛО ЗАВТРА ЖЕ !!!

Поэтому приходится иногда крутится, а иногда выкручиваться.
М_Виктор вне форума Ответить с цитированием
Старый 15.07.2010, 16:13   #14
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Цитата:
Сообщение от М_Виктор Посмотреть сообщение
Поэтому приходится иногда крутится, а иногда выкручиваться.
раз ТС не озвучил бд/субд, то по дефолту подразумевается возможность работы с ней через скл
soleil@mmc вне форума Ответить с цитированием
Старый 16.07.2010, 10:43   #15
Епгений
Пользователь
 
Регистрация: 04.05.2010
Сообщений: 59
По умолчанию

Э-э-э ребята можно за одно спросить про печать содержимого формы еси вам не трудно конечно.
мне нужно вывести на печать содержимой одной формы и все получается, но одно но при выводе размер текса маленький и выводит где то на краю листа. Нужно что б текст был по середине и размер по болше.
Я использовал две кнопки, компонент PrintDialog, PageControl1 внем я создал две закладки.
Вот код:
Код:
procedure TForm9.BitBtn1Click(Sender: TObject);
var
 i, Start, Stop: Integer;
begin
 PrintDialog1.Options := [poPageNums, poSelection];
 PrintDialog1.FromPage :=1;
 PrintDialog1.ToPage := PageControl1.PageCount;
 PrintDialog1.MinPage :=1;
 PrintDialog1.MaxPage := PageControl1.PageCount;
 if not PrintDialog1.Execute then exit;

 if PrintDialog1.PrintRange = prAllPages then
  begin
   Start := PrintDialog1.MinPage - 1;
   Stop := PrintDialog1.MaxPage - 1;
  end
 else
  if PrintDialog1.PrintRange = prSelection then
   begin
    Start := PageControl1.ActivePageIndex;
    Stop := Start;
   end
  else
   begin
    Start := PrintDialog1.FromPage - 1;
    Stop := PrintDialog1.ToPage - 1;
   end;

     Printer.BeginDoc;
 for i := Start to Stop do
  begin
   PageControl1.Pages[i].PaintTo(Printer.Handle, 10, 10);
   if i <> Stop then
    Printer.NewPage;
  end;
 Printer.EndDoc;
end;
Что тут не так?

Последний раз редактировалось Епгений; 16.07.2010 в 11:10.
Епгений вне форума Ответить с цитированием
Старый 16.07.2010, 10:51   #16
Korben5E
Форумчанин
 
Аватар для Korben5E
 
Регистрация: 13.07.2010
Сообщений: 346
По умолчанию

Цитата:
Сообщение от Епгений Посмотреть сообщение
Э-э-э ребята можно за одно спросить про печать содержимого формы еси вам не трудно конечно.
если мне память не изменяет - Form1.Print
Non est culpa vin, sed culpa bibentis
Korben5E вне форума Ответить с цитированием
Старый 16.07.2010, 17:55   #17
Епгений
Пользователь
 
Регистрация: 04.05.2010
Сообщений: 59
По умолчанию

Цитата:
Сообщение от Korben5E Посмотреть сообщение
если мне память не изменяет - Form1.Print
Эээ я вас не понял Form1.Print это для чего?
Епгений вне форума Ответить с цитированием
Старый 16.07.2010, 18:11   #18
Korben5E
Форумчанин
 
Аватар для Korben5E
 
Регистрация: 13.07.2010
Сообщений: 346
По умолчанию

Цитата:
Сообщение от Епгений Посмотреть сообщение
Эээ я вас не понял Form1.Print это для чего?
ну я-же процитировал

"мне нужно вывести на печать содержимой одной формы"
и там много кода....

я указал как можно еще форму распечатать
Non est culpa vin, sed culpa bibentis
Korben5E вне форума Ответить с цитированием
Старый 19.07.2010, 11:58   #19
Епгений
Пользователь
 
Регистрация: 04.05.2010
Сообщений: 59
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение



на кнопку повесить такой код (пишу прямо здесь, могут быть мелкие неточности):
Код:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
  i:=0;
  DataModule2.QFlgCount.Close;
  DataModule2.QFlgCount.SQL.Clear;
  DataModule2.QFlgCount.SQL.Add('select count(*) as Cnt from имяТаблицы where ФЛГ=''Да'' ');
  DataModule2.QFlgCount.Open;
  i := DataModule2.QFlgCount.FieldByName('Cnt').AsInteger;
  DataModule2.QFlgCount.Close;
  MessageDlg('кол-во прошедших ФЛГ = '+IntToStr(i), mtInformation,[mbOk],0)
end;
Спасибо вам Serge_Bliznykov за помощь, я попробовал ваш метод но появляется ошибка и гри что не нашол id.

Я вот хочу модернезидовать код М_Виктора: Запись Покровск из поле Место и запись 'ДА' из поля ФЛГ, а нужно посчитать скока
Покровск = Да
Эээ я попробовал сам состряпать код, но увы безуспешно.
Вот код:
var i,a:integer; s:string;
begin
i:=0;
if not DataModule2.FindQuery.Bof then DataModule2.FindQuery.First;
while not DataModule2.FindQuery.Eof do
begin
if DataModule2.FindQuery.FieldByName(' Место').AsString='Покровск'= DataModule2.FindQuery.FieldByName(' ФЛГ').AsString='да'
then
i:=i+1;
DataModule2.FindQuery.Next;
Edit2.text:=IntToStr(i);
Edit1.text:=IntToStr(a);
Епгений вне форума Ответить с цитированием
Старый 19.07.2010, 12:03   #20
Korben5E
Форумчанин
 
Аватар для Korben5E
 
Регистрация: 13.07.2010
Сообщений: 346
По умолчанию

Давайте-ка вы сначала сюда структуры ваших таблиц...

а то вам наугад подсказывают - результат налицо....
Non est culpa vin, sed culpa bibentis
Korben5E вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчитать сколько раз заданное слово встречается в сообщении. kri* Помощь студентам 1 28.05.2010 22:29
Как подсчитать сколько раз встречается символ в строке? zver777 Общие вопросы Delphi 10 10.01.2010 00:57
подсчитать сколько раз встретилось каждое из чисел Х - бейсик Аля Самойлова Помощь студентам 12 11.05.2009 13:41
подсчитать на сколько процентов введенный символ похож на эталонный Кирилл13 Помощь студентам 4 20.12.2008 20:17