Форум программистов, компьютерный форум, киберфорум
SQLite
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
 Аватар для SecretSilent
81 / 81 / 9
Регистрация: 16.02.2010
Сообщений: 637

SQLite: В гриде отображаются данные одной записи для всех записей подряд

20.06.2016, 15:44. Показов 2420. Ответов 16

Студворк — интернет-сервис помощи студентам
Добрый день!
Возможно, тема вопроса описана непонятно, сейчас объясню суть подробнее.
Есть у меня база данных в SQLite (только начала изучать). Использую delphi, для работы с базой использую компоненты DISQLite3 Personal.
В пустую таблицу добавляю первую запись - отображает хорошо, все правильно. Добавляю вторую: в гриде рисуется 2 записи, но во всех колонках (и для первой, и для второй записи) отображаются данные только последней добавленной (пример на рисунке).
Структура таблицы на прикрепленном рисунке.
Выборка из таблицы нехитрая:
SQL
1
SELECT * FROM clients ORDER BY name_
Для отображения информации использую связку DISQLite3UniDirQuery -> DataSource ->DBGridEh.
В свойстве SelectSQL объекта DISQLite3UniDirQuery пишу выше обозначенную выборку.

Для добавления данных использую
Delphi
1
2
sql := 'insert into clients values ((select ifnull(max(id), 0)+1 from clients), '''+name_+''', '''+contacts+''')';
dm.DISQLite3Database1.Execute16(sql);
dm - datamodule;
name_, contacts - строковые переменные с введенными данными.

Возможно, кто-нибудь смог бы мне помочь с этой проблемой?
Миниатюры
SQLite: В гриде отображаются данные одной записи для всех записей подряд   SQLite: В гриде отображаются данные одной записи для всех записей подряд  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.06.2016, 15:44
Ответы с готовыми решениями:

Заменить значение поля всех записей взятой из одной записи
Есть запись с id=3, надо как-то взять значение поля param этой записи и заменить этим значением поле всех записей этой же таблицы? ...

На главной странице сайта не отображаются картинки записей, а в самой записи все картинки отображаются
Доброго времени суток всем. Помогите пожалуйста разобраться. На главной странице сайта не отображаются картинки записей, а в самой записи...

Составить запрос для вывода всех записей, за исключением одной
Есть таблица, поля: id - 1 key - 100 id - 4 key - 100 id - 9 key - 100 Зашли на страницу 4, нужно вывести остальные id ( в нашем...

16
5963 / 4539 / 1094
Регистрация: 29.08.2013
Сообщений: 28,151
Записей в блоге: 3
20.06.2016, 16:44
а вы нигде не делаете UPDATE?
0
 Аватар для SecretSilent
81 / 81 / 9
Регистрация: 16.02.2010
Сообщений: 637
20.06.2016, 21:29  [ТС]
qwertehok, нет, update не трогала вообще. Только insert. Забыла прикрепить реальное содержимое таблицы (работаю в мэнэджее SQLite Expert Personal):
Изображения
 
0
5963 / 4539 / 1094
Регистрация: 29.08.2013
Сообщений: 28,151
Записей в блоге: 3
20.06.2016, 22:23
ничего не понимаю

а в чем проблема?
0
 Аватар для SecretSilent
81 / 81 / 9
Регистрация: 16.02.2010
Сообщений: 637
21.06.2016, 08:42  [ТС]
В том, что записи в делфи выводятся неверно. Возможно, я не ту ветку форума выбрала...
0
5963 / 4539 / 1094
Регистрация: 29.08.2013
Сообщений: 28,151
Записей в блоге: 3
21.06.2016, 08:56
Цитата Сообщение от SecretSilent Посмотреть сообщение
в делфи выводятся неверно
в делфи само ничего не выводит - вы пишите код который выводит данные из БД

своим запросом вставляете данные
потом делаете SELECT из таблицы и вставляете куда нужно
0
 Аватар для SecretSilent
81 / 81 / 9
Регистрация: 16.02.2010
Сообщений: 637
21.06.2016, 09:00  [ТС]
Я это прекрасно знаю. Вы читали первое сообщение? Я имею в виду, возможно, какая-то особенность компонентов DISQLite3? Почему в самой базе все ок, а в гриде отображается не то, что в базе?
0
5963 / 4539 / 1094
Регистрация: 29.08.2013
Сообщений: 28,151
Записей в блоге: 3
21.06.2016, 09:31
Table (если это он) отображет не то что есть в базе, а набор данных в который смотрит
вы уверены то что правильно используете компоненты?

PS у вас какая версия Delphi?
0
 Аватар для SecretSilent
81 / 81 / 9
Регистрация: 16.02.2010
Сообщений: 637
21.06.2016, 21:52  [ТС]
qwertehok, использую для выборки объект класса TDISQLite3UniDirQuery. В свойство SelectSQL пишу текст выборки
SQL
1
SELECT * FROM clients ORDER BY name_
Что не так?
Версия 7.
0
5963 / 4539 / 1094
Регистрация: 29.08.2013
Сообщений: 28,151
Записей в блоге: 3
22.06.2016, 09:04
Цитата Сообщение от SecretSilent Посмотреть сообщение
Что не так?
не знаю
у тебя что-то неправильно

у меня уже несколько рабочий проектов (и кучка тестовых) на SQLite и все работает
0
 Аватар для SecretSilent
81 / 81 / 9
Регистрация: 16.02.2010
Сообщений: 637
22.06.2016, 10:02  [ТС]
Тогда скажите, как правильно, пожалуйста. Я и так понимаю, что у меня "что-то" неправильно, но хотелось бы знать, что именно.

Добавлено через 5 минут
Процедура вставки новой записи:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TfClients.ToolButton1Click(Sender: TObject);
var
  name_, contacts, sql: AnsiString;
begin
  if InputQuery('Новый заказчик','Введите имя заказчика:', name_) then
    if( name_ <> '') then
      if InputQuery('Контакты', 'Введите контактные данные:', contacts) then begin
        sql := 'insert into clients values ((select ifnull(max(id), 0)+1 from clients), '''+name_+''', '''+contacts+''')';
        dm.DISQLite3Database1.Execute16(sql);
        ShowTable;
      end;
end;
Процедура ShowTable:
Delphi
1
2
3
4
5
6
7
procedure TfClients.ShowTable;
begin
  with dm.qClients do begin
    Active := false;
    Active := true;
  end;
end;
qClients - тот объект класса TDISQLite3UniDirQuery с выборкой, о котором писала выше. Связь грид-датасорс-датасет описала в первом сообщении.
0
5963 / 4539 / 1094
Регистрация: 29.08.2013
Сообщений: 28,151
Записей в блоге: 3
22.06.2016, 10:32
запрос правильный, странно
вы его (запрос) проверяли?

попробуйте данные вывести не в DBGrid, а просто в грид
0
 Аватар для SecretSilent
81 / 81 / 9
Регистрация: 16.02.2010
Сообщений: 637
22.06.2016, 13:07  [ТС]
qwertehok,
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TfClients.ShowTable;
begin
  with dm.qClients do begin
    Active := false;
    Active := true;
    StringGrid1.RowCount := 1;
    First;
    while (not Eof) do begin
      StringGrid1.Cells[0,StringGrid1.RowCount-1] := dm.qClients.fieldbyname('name_').AsString;
      StringGrid1.RowCount := StringGrid1.RowCount+1;
      Next;
    end;
  end;
end;
Выводит правильно...
Миниатюры
SQLite: В гриде отображаются данные одной записи для всех записей подряд  
0
 Аватар для SecretSilent
81 / 81 / 9
Регистрация: 16.02.2010
Сообщений: 637
22.06.2016, 13:18  [ТС]
Причем, когда хочу перейти на вторую запись скроллом мышки, почему-то в гриде рисуется 3 одинаковых строки с данными первой записи (имя1, контакты1), когда 2 раза крутану колесом мышки - 4 одинаковых строки с данными 2 записи. Когда хочу перейти наверх и кручу колесом мышки вверх, выскакивает ошибка (все приложении).
Я понимаю, я звучу занудно и доставуче, но хотелось бы узнать в чем подвох, что я делаю не так и исправить это, создать нормальный проект на sqlite.
0
5963 / 4539 / 1094
Регистрация: 29.08.2013
Сообщений: 28,151
Записей в блоге: 3
22.06.2016, 13:22
а может у вас этот .ShowTable; несколько раз выполняется?

попробуйте до StringGrid1.RowCount := 1; грид чистить
это конечно костыль, лучше перенести заполнение таблицы на другое событие

Добавлено через 15 секунд
а может у вас этот .ShowTable; несколько раз выполняется?

попробуйте до StringGrid1.RowCount := 1; грид чистить
это конечно костыль, лучше перенести заполнение таблицы на другое событие
0
 Аватар для SecretSilent
81 / 81 / 9
Регистрация: 16.02.2010
Сообщений: 637
23.06.2016, 09:19  [ТС]
qwertehok, выполняется при создании формы и после внесения изменений в таблицу.
хотелось бы использовать dbgrid, а не мучаться со стринггридом – вообще не вариант...
ладно, буду пытаться разобраться сама...
0
5963 / 4539 / 1094
Регистрация: 29.08.2013
Сообщений: 28,151
Записей в блоге: 3
23.06.2016, 09:36
Цитата Сообщение от SecretSilent Посмотреть сообщение
мучаться со стринггридом
3 раза ха

ваш ДБГрид отстой и прошлый век. Их использовать только в учебных проектах можно (ИМХО)
а стринггрид няшка
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.06.2016, 09:36
Помогаю со студенческими работами здесь

Работа только одной копии программы для всех учетных записей
Поставил программу в автозагрузку для всех пользователей. На компьютере имеются несколько «Пользователей». Когда компьютер включили,...

Использование двух записей одной таблицы в одной записи другой
Всем привет! Есть таблица &quot;Application&quot;, в ней есть 2 поля, которые содержат: ID пользователя, который запись создал и ID...

Как привязать несколько записей из одной таблица к одной записи в другой таблице
Всем привет! Решил делать курсовой в 1С предприятие (идиот). Суть такая: у меня есть две таблицы студенты и их достижения. Как сделать так,...

Как перенести данные из поля одной формы в другую для последующей записи в таблицу?
Добрый день Уважаемые форумчане, вновь мне необходим ваш совет (такое чувство что я слишком часто прошу помощи), покорнейше прошу тапками...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru