Взаимодействие SqLite3 и DBListBox, DBLookUpListBox, DBCombo

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Взаимодействие SqLite3 и DBListBox, DBLookUpListBox, DBCombo

Сообщение aiisakov » 20.01.2020 00:05:43

Никак не могу выбрать какие компоненты использовать, попробовав уже несколько.
Есть 3 таблицы в БД - L1, L2, L3.

L1L2L3.jpg


Хочу, чтобы пользователь, выбирая последовательно строку из каждой таблицы,
получил в конце идентификатор ID1+ID2+ID3 (+ это конкатенация)и мог выбрать
в DBGrid все записи по нему.
Таблицы в БД работают (через SQLiteStudio).
Я пробовал три компонента DBListBox, DBLookUpListBox, DBComboBox для пробы с таблицей L1.
Первые два ничего не показывают. Третий показывает одну строку. DBGrid показывает все записи, но в поле N1 пишет MEMO, а не содержимое поля.
Может подход неверен? Или всё правильно, но вставку строк в компоненты нужно кодить?
Как сделать так, чтобы пользователь в конце видел все три столбца данных, выбранных ими последовательно.
Так лучше обзор, для принятия решения. Поэтому DBComboBox лучше не использовать (он однострочный).
А уж с DBGrid можно потом разобраться.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
aiisakov
новенький
 
Сообщения: 15
Зарегистрирован: 09.10.2018 00:51:37
Откуда: Суздаль

Re: Взаимодействие SqLite3 и DBListBox, DBLookUpListBox, DBC

Сообщение Снег Север » 20.01.2020 08:45:46

Не знаю что такое "поле N1", но глюк с MEMO вместо содержимого поля очень частый и лечится использованием функции CAST в SQL-запросе.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2473
Зарегистрирован: 27.11.2007 16:14:47

Re: Взаимодействие SqLite3 и DBListBox, DBLookUpListBox, DBC

Сообщение alexs » 20.01.2020 09:36:18

aiisakov писал(а):ретий показывает одну строку. DBGrid показывает все записи, но в поле N1 пишет MEMO, а не содержимое поля.

MEMO отображается для тех столбцов, которые объявлены как безразмерные. Например - вместо VARCHAR(250) - уакзано VARCHAR
Ещё может быть для сложения столбцов (A1 || ' ' || A2 ) - тут, как правильно указал Снег Север надо кастовать.
Относительно недавно в параметрах DBGrid-а появился флажок для отображения MEMO полей в виде текста.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 3899
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Взаимодействие SqLite3 и DBListBox, DBLookUpListBox, DBC

Сообщение Vadim » 20.01.2020 10:17:03

alexs писал(а):Например - вместо VARCHAR(250) - уакзано VARCHAR

Или, чаще всего, TEXT. Если там много текста, то пихать его в Grid не очень разумно, о чём сам Grid и напоминает. Лучше выложить на форму отдельное DBMemo.
Vadim
долгожитель
 
Сообщения: 3871
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Взаимодействие SqLite3 и DBListBox, DBLookUpListBox, DBC

Сообщение aiisakov » 20.01.2020 18:34:07

Упрощу вопрос, наверное я не так сформулировал.
Мне нужно:
1. Установить компонент на форму
2. Связать его с таблицей БД, чтобы все строки таблицы отобразились в компоненте
3. Запустить после компиляции проекта exe-файл и выбрать нужную строку
4. Передать все элементы строки на дальнейшую обработку

Какой компонент будет для этого нужен, чтобы поменьше кодить?
Мне пока известен только DBGrid. И то нужно писать обработчик.
aiisakov
новенький
 
Сообщения: 15
Зарегистрирован: 09.10.2018 00:51:37
Откуда: Суздаль

Re: Взаимодействие SqLite3 и DBListBox, DBLookUpListBox, DBC

Сообщение Vadim » 20.01.2020 18:58:18

aiisakov писал(а):Передать все элементы строки

Многоколоночный компонет - DBGrid.
aiisakov писал(а):И то нужно писать обработчик.

Весёлый Вы человек... :D А по Вашему DBGrid сам должен знать, что Вам нужно? Очень напоминает претензию жены мужу... :D
Vadim
долгожитель
 
Сообщения: 3871
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Взаимодействие SqLite3 и DBListBox, DBLookUpListBox, DBC

Сообщение alexs » 21.01.2020 09:24:13

aiisakov
Обычная ошибка начинаюших
Надо для себя разделить логику обработки данных и визуальную часть
Вкратце это можно так - визуальные компоненты нужны что бы пользователь выбрал запись в наборе данных

А для обработки данных пишется код, который использует компоненты доступа к данным - наследников DataSet (SQLQuery, ZQuery или ещё какой там). Для доступа к полям таблицы данных используем метод .FieldByName('имя поля').AsString (.AsInteger...)

Ну и почитать любой нормальный учебник по работе с данными в дельфи/лазарусе.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 3899
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Взаимодействие SqLite3 и DBListBox, DBLookUpListBox, DBC

Сообщение aiisakov » 21.01.2020 12:10:53

Vadim, Спасибо за ответ - "Весёлый Вы человек... :D" Наш мозг получает внутренние эндорфины, когда затрачивает меньше энергии. Вот мы и ленимся... Но я победю себя! Или побежду?
Для веселья цитата из Марка Твена - "Когда я и моя жена расходимся во мнениях, мы обычно поступаем так, как хочет она. Жена называет это компромиссом."

alexs, спасибо. Я слишком много накачал учебников и запутался в них. Такого строго логичного, для начинающих не увидел. Один начинает с примеров и не даёт основные принципы, другой даёт основные функции и типизацию (но только целые и вещественные - string и char не упоминает, а мне надо знать сколько символов можно поместить в строку), третий описывает нескольку устаревший вариант Паскаля и т.п. Но с помощью знатоков верхнего уровня обучение идёт намного быстрее!!!
aiisakov
новенький
 
Сообщения: 15
Зарегистрирован: 09.10.2018 00:51:37
Откуда: Суздаль

Re: Взаимодействие SqLite3 и DBListBox, DBLookUpListBox, DBC

Сообщение Снег Север » 21.01.2020 15:56:49

aiisakov, тут на сайте есть ссылка на актуальный учебник по фрипаскалю, сделанный этузиастом. Хороший учебник.
viewtopic.php?t=8718&view=unread#unread
А в строку вы можете записать столько символов, сколько позволяет память вашего компа... :D Поскольку современные строки - это динамические массивы.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2473
Зарегистрирован: 27.11.2007 16:14:47

Re: Взаимодействие SqLite3 и DBListBox, DBLookUpListBox, DBC

Сообщение aiisakov » 21.01.2020 16:47:38

Снег Север писал(а):Хороший учебник.
viewtopic.php?t=8718&view=unread#unread


Спасибо, утащил в свою библиотеку.
aiisakov
новенький
 
Сообщения: 15
Зарегистрирован: 09.10.2018 00:51:37
Откуда: Суздаль


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot], MailRu[bot], MSN [Bot] и гости: 6

Рейтинг@Mail.ru