Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.70/40: Рейтинг темы: голосов - 40, средняя оценка - 4.70
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 33

Вывод определенных строк в DBGrid

15.05.2013, 13:21. Показов 8582. Ответов 58
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе время суток.
Не знаю как реализовать вывод определенных строк в DBGrid.
Пример: Есть таблица с 3 столбцами, и 10 строками. Первые 2 столбца заполнены во всех строках, в 3 столбце заполнены только 5 строк. Требуется вывести строки, в которых 3 столбец не заполнен, по клику Button, на новую форму.

Заранее благодарен.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.05.2013, 13:21
Ответы с готовыми решениями:

Вывод определенных полей из одного DBGrid в другой
Заранее извиняюсь за вероятно невнятное описание вопроса. Подскажите как вывести 3 ячейки одного DBGrid, в другой DBGrid (соответственно в...

Вывод определенных строк
Добрый день. Есть задача: средствами командной строки (лучше) или скриптом (хуже) выводить определенный промежуток строк. Поясняя: ...

Вывод определенных строк из БД
Вообщем есть БД. Там данные зарегистрированных пользователей id,login, user,password,age и тд. Вообщем если пользователь заходит под своим...

58
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
17.05.2013, 09:58
Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int save = 0;//объявить глобально
void __fastcall TForm6::Button1Click(TObject *Sender)
{
save = Form3->ADOTable1->FieldByName("id")->AsInteger;
Form5->ADOQuery1->Close();
Form5->ADOQuery1->SQL->Clear();
Form5->ADOQuery1->SQL->Add("UPDATE hotel SET datazas = :datazas, datavis = :datavis");
Form5->ADOQuery1->SQL->Add("WHERE id = " + IntToStr(save));
Form5->ADOQuery1->Parameters->ParamByName("datazas")->Value = "";
Form5->ADOQuery1->Parameters->ParamByName("datavis")->Value = "";
Form5->ADOQuery1->ExecSQL();
Form3->ADOTable1->Close();
Form3->ADOTable1->Open();
DBGrid1->Refresh();
}
0
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 33
17.05.2013, 11:09  [ТС]
Он освободил почему то 1 строку в таблице, хотя я выбирал другую строку.
Когда он освободил эту первую строку, я решил проверить, будет ли эту строку выдавать в Свободных номерах, оказывается нет. Как сделать так, чтобы шло обновление? Перезапускал программу, он выводит эту же строку в забронированных номерах, хотя эти ячейки пустые.

+ к тому, только после закрытия формы, и открытия ее заново, только тогда ячейки становятся пустыми.
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
17.05.2013, 11:55
Вот держи
Вложения
Тип файла: rar программа.rar (4.49 Мб, 22 просмотров)
1
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 33
17.05.2013, 12:28  [ТС]
Большое спасибо.
Только остается не большой нюанс.
C++
1
2
3
4
5
 Form3->DataSource1->DataSet = Form6->ADOQuery1;
 ADOQuery1->Close();
 ADOQuery1->SQL->Clear();
 ADOQuery1->SQL->Add("SELECT *FROM hotel WHERE datazas IS NOT NULL");
 ADOQuery1->Open();
Тоже самое я сделал и для Забронированных номером, все прекрасно выводит.
Но, когда я освобождаю номер, тобишь отчищаю эти 2 ячейки определенной строки, эта строка не отображается в Свободных номерах, хотя ячейки эти пусты.
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
17.05.2013, 13:02
ПОтому что там ячейки со значением NULL, а не "" вот фильтр и не срабатывает тебе надо сделать запрос с подменой NULL на "" и тогда должно быть нормально
0
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 33
17.05.2013, 13:28  [ТС]
Глупый вопрос, но все же. Как сделать(правильно написать) этот запрос?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
20.05.2013, 15:38
SQL
1
UPDATE hotel SET имя_поля = '' WHERE имя_поля IS NULL;
1
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 33
21.05.2013, 12:36  [ТС]
Не понимаю в чем проблема. При освобождении номера вся таблица перестает отображаться, после того как я закрываю эту форму и захожу обратно на нее, освобождается 1 номер, хотя я освобождал не его. Если не трудно, исправьте ошибочку, заранее благодарен
Данная кнопка перестала работать, когда я отобразил на этой форме только номера с заполненной датой.

программа.rar

P.S. программа уже была переработана в более новый вариант, вот он.
0
1409 / 573 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
21.05.2013, 14:06
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void __fastcall TForm6::Button1Click(TObject *Sender)
{
save = Form6->ADOQuery1->FieldByName("id")->AsInteger;
Form6->ADOQuery1->Close();
Form6->ADOQuery1->SQL->Clear();
Form6->ADOQuery1->SQL->Add("UPDATE hotel SET datazas = :datazas, datavis = :datavis");
Form6->ADOQuery1->SQL->Add("WHERE id = :id");
Form6->ADOQuery1->Parameters->ParamByName("id")->Value = save;
Form6->ADOQuery1->Parameters->ParamByName("datazas")->Value.IsNull();
Form6->ADOQuery1->Parameters->ParamByName("datavis")->Value.IsNull();
Form6->ADOQuery1->ExecSQL();
Form6->ADOQuery1->SQL->Clear();
Form6->ADOQuery1->SQL->Add("SELECT *FROM hotel WHERE datazas IS NOT NULL");
Form6->ADOQuery1->Open();
 
Form3->ADOTable1->Close();
Form3->ADOTable1->Open();
 
//Form6->ADOQuery1->SQL->Add("UPDATE hotel SET datazas = '' WHERE datazas IS NULL");
//Form6->ADOQuery1->SQL->Add("UPDATE hotel SET datavis = '' WHERE datazas IS NULL");
//DBGrid1->Refresh();
}
Добавлено через 6 минут
Вроде так
1
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 33
21.05.2013, 14:12  [ТС]
Огромное спасибо за помощь _Dimon_ и Sasha, все работает
Тему можно закрывать
0
1409 / 573 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
21.05.2013, 14:29
V1Nt1k3zOr, только я смотрю ты Form3->ADOTable1->CursorType поставил ctStatic,
верни на ctKeyset, а то номера бронировать не сможешь

Добавлено через 7 минут
Хотя можно через другой датасет, также как и на форм6
0
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 33
21.05.2013, 16:05  [ТС]
Пытаюсь поставить ctKeyset, выбираю свойство ADOTable>Active>True , он обратно возвращает на ctStatic.
Как решить данную проблему, чтобы можно было бронировать номера?

Так же не работает поиск.
0
1409 / 573 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
21.05.2013, 16:23
а что в поле datazas ?

Добавлено через 6 минут
Не, ты сначала поставь ctKeyset и сохрани. В design-time не включай ADOTable>Active>True

Добавлено через 5 минут
Зайди в Form3->ADOTable1 в редактор полей и на каждом поле поставь ReadOnly=false

Добавлено через 1 минуту
В Form8 OnShow напиши
C++
1
2
 Form3->ADOTable1->Open();
 Form3->ADOTable1->Insert();
0
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 33
21.05.2013, 17:12  [ТС]
В design-time не включай ADOTable>Active>True

Не понял, что именно требуется сделать.


Поставил ctKeyset, в ADOTable>Active стоит false, ReadOnly=false, событие Form8 onShow написал. При попытки забронировать номер, после ввода даты, выдает ошибку.
0
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 33
22.05.2013, 19:48  [ТС]
Поиск заработал, осталось решить проблему с бронированием номеров.
0
1409 / 573 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
22.05.2013, 19:52
V1Nt1k3zOr, откуда надо бронировать: с формы2 или с формы5 ?
0
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 33
22.05.2013, 20:35  [ТС]
Цитата Сообщение от _Dimon_ Посмотреть сообщение
V1Nt1k3zOr, откуда надо бронировать: с формы2 или с формы5 ?
Кнопка бронировать номер находится на форме 5. Мы выбираем номер в таблице, нажимаем бронировать, открывается 8 форма. Вводим дату, нажимаем забронировать и после этого, этот номер должен отображаться в забронированных номерах, на форме 6, и не отображаться на форме 5 ( свободных номерах).

Вот программа в более новом варианте: программа final.rar
0
1409 / 573 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
22.05.2013, 20:57
C++
1
2
3
4
void __fastcall TForm8::FormShow(TObject *Sender)
{
 Form3->ADOTable1->Open();
}
0
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 33
22.05.2013, 21:14  [ТС]
Цитата Сообщение от _Dimon_ Посмотреть сообщение
C++
1
2
3
4
void __fastcall TForm8::FormShow(TObject *Sender)
{
 Form3->ADOTable1->Open();
}
Ничего не происходит. Номер не бронируется.

Кнопка забронировать номер:

C++
1
2
3
4
5
void __fastcall TForm5::Button2Click(TObject *Sender)
{
Form8->Show();
Form3->ADOTable1->Edit();
}
0
1409 / 573 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
22.05.2013, 21:40
Я понял, чуть переделал, вроде все работает.
Подмени у себя файлы с архива, а там посмотрим
Вложения
Тип файла: rar copy.rar (5.0 Кб, 11 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.05.2013, 21:40

Вывод определенных строк на печать
Есть csv файл, в нем по-порядку идут номера счетов. У номеров счетов есть две группы: 1-я группа это номера, начинающиеся на 422, 433,...

Вывод определённых строк по условию
Имеется сsv файлик в нём три столбика a, b, c. Подключена библиотека pandas и numpy так вот, необходимо взять строки которые...

Вывод определенных строк из файла
Здравствуйте, мне очень нужна помощь совсем запуталась и не знаю что делать работу нужно сдавать иначе не допуск. Код: using...

Вывод определенных строк из файла
Здравствуйте. У меня такая проблема. Надо написать ВАТ файл который печатает конец файла, по умолчанию 10 последних строк. Имя файла...

Выбор и вывод определенных строк
Всем привет! Вот мучаюсь уже долгое время, не где найти не могу информацию решил у вас спросить. И так. Вот пример: Есть таблица...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Многофункциональное здание: как одно здание порождает конфликты требований, которые никто не планировал (мат мет мод 29)
anaschu 23.06.2026
Многофункциональное здание: как одно здание порождает конфликты требований, которые никто не планировал Материалы для обсуждения с МГСУ · 2026 Рисунки внутри приложенного ворд файла. Что за. . .
28. Конкретное развертывание плана номер 1 из поста номер 27
anaschu 22.06.2026
Можно ли из модели получить конкретные строительные требования? Честно — напрямую из текущей модели такие ответы не получить. Но цепочка логики есть, и она не такая длинная. Где разрыв . . .
27. Планы на разработку функциональных требований к строительству внутри модели пищеблока (или не только его?)
anaschu 22.06.2026
Что уже реализовано и даёт конфликты «бесплатно» Самый простой конфликт уже работает — конфликт за ресурс-работника. Заданий больше, чем доступных поваров → очередь в queue1. Это прямое отражение. . .
26. мед мат модель.Какие типы конфликтов функциональных требований можно рассчитать через ДЕС-моделирование (СМО) в AnyLogic?
anaschu 22.06.2026
Что ДЕС/ СМО умеет считать напрямую: Конфликты за ресурсы (очереди, узкие места). Несколько типов агентов (повара, учителя, рабочие, пациенты) претендуют на один ресурс (лифт, вход, коридор,. . .
25 модель здравосохранения и функциональных требований к пищеблоку: конфликты функциональных требований.
anaschu 22.06.2026
Есть ли данные о том, какие функциональные/ эксплуатационные требования или их сочетания труднее всего учитывать при проектировании зданий? Да, такие данные есть, и они хорошо описаны и в российской,. . .
Remote Connection Manager
DevAlt 21.06.2026
Написал для себя небольшую прилагу: https:/ / github. com/ altbodhi/ ReConMan По итогу пришел к мысли, что DU не дружат с существующими технологиями. От сериализации до отображения в реляционную. . .
Администрация Хабра удаляет новые энергоэфективные алгоритмы, которые не западной школы кода, и вовсе никак не сгенерированы
Hrethgir 20.06.2026
Делается это, как замечено, при правках - при объявлении концептуальных отличий в алгоримах. Делается это, по линейке событий - после дополнения публикации основными отличиями от основных западных. . .
Процесс ориентированная диалектика (не новость - просто системное обновление, философия).
Hrethgir 20.06.2026
Однажды один участник в своём блоге, на этом форуме, сделал запись "О языках замолвите слово". Понимая, что язык - важная вещь, я решил хорошо подумать, прежде чем сказать, и сказал то, что вы видите. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru