Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: СУБД и Delphi/Lazarus

  Все выпуски  

RusFAQ.ru: СУБД и Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / СУБД и Delphi

Выпуск № 365
от 15.07.2007, 11:05

Администратор:Gh0stik
В рассылке:Подписчиков: 332, Экспертов: 39
В номере:Вопросов: 3, Ответов: 6


Вопрос № 94468: Здравствуйте уважаемы эксперты, сейчас уже рассматривается один мой вопрос на минифоруме, но чтобы не путать задачи я хотел бы вам задать вопрос по другой проблемке в отдельном минифоруме т.к. этот вопрос отличается от предыдущего. DBGrid отображает ...
Вопрос № 94517: Здравствуйте! Я установила QReport для создания отчетов. Отчеты на основе статичных запросов я успешно реализовала (размещая текст запроса в св-ве SQL в редакторе свойств). Сейчас мне необходимо формировать отчет, запрос для которого формируется в пр...
Вопрос № 94573: здраствуйте Уважаемые, подскажите мне книги для изучения InterBase/Firebird/Yaffil я практически ничего не знаю по этим базам. короче мне надо с нуля изучать. ...

Вопрос № 94.468
Здравствуйте уважаемы эксперты, сейчас уже рассматривается один мой вопрос на минифоруме, но чтобы не путать задачи я хотел бы вам задать вопрос по другой проблемке в отдельном минифоруме т.к. этот вопрос отличается от предыдущего. DBGrid отображает данные по нужному документу из таблицы РК1111 (так она названа в Access) в поле DBGrid я редактирую строки. сейчас у меня выводятся все столбцы и получается чтото типа редактора для моей программы, но для удобства мне нужно чтобы допустим при нажатии на Button выводились данные с тойже таблицы (уже отредактированной) но только тех столбцов в строчках которых есть записи. т.е. я ввожу поиск строки по какомуто столбцу Например: столбец "Номер" а строка 218621 это у меня уже работает, но вот остальные столбцы, которые не заполнены мне не нужны. Это все происходит во время выполнения программы а не при написании кода, где можно заранее ввести отображение нужных столбцов. Буду очень презнателен если вы мне поможите. Заранее с пасибо.
Отправлен: 09.07.2007, 13:19
Вопрос задал: Мишин Станислав Михайлович (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 5)

Отвечает: Кэр Лаэда
Здравствуйте, Мишин Станислав Михайлович!

Это можно сделать 2 способами

1. при формировании запроса
вместо

select *

писать имена полей таблицы которые нужно отобразить в DBgrid

select поле1,поле2,поле3 fromPK1111 where Номер=218621


при этом сразу в запросе полям можно давать имена


select поле1 as Номер,поле2 as ЧтоТоЕще,поле3 as ЧтоНибудь fromPK1111 where Номер=218621


а второй способ
кликнуть по DBGrid правой кнопкой мыши и там есть в меню Columns Editor в нем еще на этапе проектирования задаются столбцы для отображения в DBGrid их имена и ширина
после создания колонки нужно указать FieldName - это и будет название колонки из запроса т.е. в случае первого моего запроса поле1 а во втором Номер

---------
Я знаю что ничего не знаю, но я знаю больше, чем тот кто думает что знает все
Ответ отправил: Кэр Лаэда (статус: Студент)
Ответ отправлен: 09.07.2007, 13:35

Отвечает: Виктор Пырлик
Здравствуйте, Мишин Станислав Михайлович!
Ваша задача не совсем тривиальна (и мне не понятно зачем это), поэтому, я предложу два этапа:
1. Нам надо управлять видимостью колонками (столбцами) DBGrid, следовательно, необходимо создать форму – небольшого размера, например, 350 х 350, на эту форму положить компонент CheckListBox и добавить кнопку для закрытия этой формы.
2. В событии OnShow этой формы написать процедуру заполнения листбокса

************** это наша дополнительная форма ********************
// щелкая по строкам ческлистбокса – мы упарвляем видимостью колонок
procedure TForm1.CheckListBox1ClickCheck(Sender: TObject);
begin
DBGrid1.Columns[CheckListBox1.ItemIndex].Visible := CheckListBox1.Checked[CheckListBox1.ItemIndex];
end;

// в этой процедуре мы заносим все поля в ческлистбокс
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
s:string;
begin
CheckListBox1.Clear;
for i:=0 to DBGrid1.Columns.Count-1 do
begin
s := DBGrid1.Columns[i].Title.Caption;
CheckListBox1.Items.Add(s);
CheckListBox1.Checked[CheckListBox1.Items.IndexOf(s)] := DBGrid1.Columns[i].Visible;
end;
end;
*****************************************************************
Для решения основной задачи – придется решить круг вопросов
Таблица – DBGrid, будет отображать все записи, за все время, и, если нет сегодня записей в колонках, то «вчера» и т.д. могут быть, следовательно – надо использовать фильтр на сегодняшний день (например). Тогда, можно использовать цикл:

// тут, по событии кнопки, мы делаем не видимыми колонки пустые, таблица должна быть отфильтрована на
// нужные нам записи
procedure TForm1.BitBtn1Click(Sender: TObject);
var i:integer;
begin
for i:=0 to DBGrid1.Columns.Count-1 do
begin
if(DBGrid1.Columns.Items[i].Field.AsString = '')then
DBGrid1.Columns[i].Visible := false
else
DBGrid1.Columns[i].Visible := true;
CheckListBox1.Checked[i] := DBGrid1.Columns[i].Visible;
end;
end;

это основная идея, поработав, вы поймете – DBGrid это не просто «редактор», этот компонент подчиняется правилам базы данных, и следовательно, решение задачи в той постановке что вы задали можно, но требует дополнительных усилий и не понятно зачем.


---------
Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: 6-ой класс)
Ответ отправлен: 09.07.2007, 15:01


Вопрос № 94.517
Здравствуйте! Я установила QReport для создания отчетов. Отчеты на основе статичных запросов я успешно реализовала (размещая текст запроса в св-ве SQL в редакторе свойств). Сейчас мне необходимо формировать отчет, запрос для которого формируется в программе, отбираются данные по признаку, указываемому пользователем. QReport не хочет работать с TQuery, у которого не прописано свойство SQL, пишет, что "SQL statement no aviliable". Как можно обойти такую проблему?
Отправлен: 09.07.2007, 20:22
Вопрос задала: Mammka (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Shveps
Здравствуйте, Mammka!
Перед выполнением запроса советую в свойстве SQL вашего компонента от TQuery прописать скрипт сформированного вами запроса. Например:
Query1.Active := false; //закрываем запрос
//присваиваем значение переменной типа string, в которой хранится ваш запрос
Query1.SQL.Text := SQLScript;
Query1.Active := true; //открываем запрос

Советую обратится к компонентам типа ADO. В них горахдо гиче функционал. Хотя, вроде бы, QReport не работает с ними. Во всяком случае попробовать стоит :)
Есть более продвинутая альтернатива QReport. Это FastReport.
---------
Пиво ф топку !!! Водку Тоже !!!
Ответ отправил: Shveps (статус: 5-ый класс)
Ответ отправлен: 10.07.2007, 07:49


Вопрос № 94.573
здраствуйте Уважаемые,
подскажите мне книги для изучения InterBase/Firebird/Yaffil
я практически ничего не знаю по этим базам.
короче мне надо с нуля изучать.

Приложение:

Отправлен: 10.07.2007, 10:06
Вопрос задал: Волошин В.В. (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Архангельский Андрей Германович
Здравствуйте, Волошин В.В.!

Есть две хорошие книги:
Хелен Борри "Firebird, Руководство разработчика" (она один из разработчиков Firebird)

А.Ковязин "Мир Interbase" изд.Кудиц-Образ

а также сайт ibase.ru
---------
Если дело заслуживает быть сделаным, то оно заслуживает, чтобы его сделали ХОРОШО
Ответ отправил: Архангельский Андрей Германович (статус: Специалист)
Ответ отправлен: 10.07.2007, 10:22

Отвечает: Виктор Пырлик
Здравствуйте, Волошин В.В.!

Очень хорошая книга по Firebird:
«Firebird руководство разработчика баз данных» Хелен Борри, Санкт-Петербург, «БХВ-Петербург»

В дополнение, можно взять:
Мир Interbase Архитектура, администрирование и разработка приложений баз данных в Interbase Firebird Yaffil, А.Н. Ковязин С.М. Востриков Москва, КУДИЦ-ОБРАЗ

Если вы не знакомы с теорией баз данных, то, желательно почитать теорию, например (но не обязательно)
БАЗЫ ДАННЫХ модели, разработка, реализация
УЧЕБНИК Т. Карпова Санкт-Петербург, ПИТЕР.

---------
Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: 6-ой класс)
Ответ отправлен: 10.07.2007, 10:32

Отвечает: sir henry
Здравствуйте, Волошин В.В.!
Поскольку рассылка называется "СУБД и Дельфи", то Вам необходимы книги не только по БД, но и по взаимодействию БД и Дельфи.
1. Книга Хелен Борри. Firebird: руководство разработчика баз данных.
По полноте описания FireBird вне конкуренции. На books.ru:
http://www.books.ru/shop/books/490929
2. Что касается взаимодействия Дельфи и FireBird, то книг много и однозначно выбрать что-либо трудно. Вот например:
- Шкрыль. Разработка клиент-серверных приложений в Delphi (+ CD).
http://www.books.ru/shop/books/357724
- Фаронов. Программирование баз данных в Delphi 7. Учебный курс
Эта книга скорее справочник, а не учебник. По крайней мере я ею пользуюсь именно как справочником. :)
http://www.books.ru/shop/books/84772
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 10.07.2007, 11:02


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.53 beta от 09.07.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное