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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.07.2021, 15:48   #1
Eugene_Stoun
Пользователь
 
Аватар для Eugene_Stoun
 
Регистрация: 14.06.2013
Сообщений: 56
По умолчанию Из ListBox в БД

Всем привет! Такой вопрос пытаюсь с нескольких ListBox-ов передать информацию в таблицу,а при просмотре таблицы сплошные повторы записей из ListBox-ов, как это можно убрать или по другому записать данные в таблмцу вот код:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
q1,q2,q3:integer;
begin
for q1:=0 to ListBox1.Items.Count-1 do
begin
for q2:=0 to ListBox1.Items.Count-1 do
begin
ADOQuery1.Close;
ADOQuery1.SQL.Text := 'INSERT INTO katalog  (Data, Kvitok, Ssilka) VALUES (:dr, :sd, :ss)';
ADOQuery1.Parameters.ParamByName('dr').Value := ListBox1.Items.Strings[q1];
ADOQuery1.Parameters.ParamByName('sd').Value := ListBox2.Items.Strings[q2];
ADOQuery1.Parameters.ParamByName('ss').Value := 'https:';//+sl3;
ADOQuery1.ExecSQL;
end;
end;
end;
Все отрабатывает, а при просмотре в таблице множественные повторы в столбцах:
Повторы.jpg
А в ListBox-ахListBoxы.jpg
Учиться, учиться и еще раз учиться!
Eugene_Stoun вне форума Ответить с цитированием
Старый 07.07.2021, 16:02   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

и зачем вам два ОДИНАКОВЫХ цикла
Цитата:
Код:
for q1:=0 to ListBox1.Items.Count-1 do begin
for q2:=0 to ListBox1.Items.Count-1 do begin
Цитата:
а при просмотре таблицы сплошные повторы записей
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 07.07.2021, 16:21   #3
Eugene_Stoun
Пользователь
 
Аватар для Eugene_Stoun
 
Регистрация: 14.06.2013
Сообщений: 56
По умолчанию

evg_m,

Цитата:
и зачем вам два ОДИНАКОВЫХ цикла
Увидел и подправил, но результат тот же((((

Код:
for q1:=0 to ListBox1.Items.Count-1 do begin
for q2:=0 to ListBox2.Items.Count-1 do begin
Учиться, учиться и еще раз учиться!
Eugene_Stoun вне форума Ответить с цитированием
Старый 07.07.2021, 20:51   #4
Viktor61
Пользователь
 
Регистрация: 05.05.2018
Сообщений: 92
По умолчанию

Eugene_Stoun, а Вы уверены в своих данных, которые передаете в БД. Нет ли повторов в ListBox'ах?
Viktor61 вне форума Ответить с цитированием
Старый 07.07.2021, 20:55   #5
Viktor61
Пользователь
 
Регистрация: 05.05.2018
Сообщений: 92
По умолчанию

Посмотрите:
Цитата:
Сообщение от Eugene_Stoun Посмотреть сообщение
for q1:=0 to ListBox1.Items.Count-1 do begin
for q2:=0 to ListBox2.Items.Count-1 do begin
- параметрам q1 и q2 передаются одни и те же данные!
Viktor61 вне форума Ответить с цитированием
Старый 07.07.2021, 21:01   #6
Viktor61
Пользователь
 
Регистрация: 05.05.2018
Сообщений: 92
По умолчанию

М.б. сравнить ListBox1.Items.Count и ListBox2.Items.Count, и если они равны провести
Цитата:
Сообщение от Viktor61 Посмотреть сообщение
for q1:=0 to ListBox1.Items.Count-1 do begin
с присвоением параметров внутри этого цикла
Цитата:
Сообщение от Eugene_Stoun Посмотреть сообщение
ADOQuery1.Parameters.ParamByName('d r').Value := ListBox1.Items.Strings[q1];
ADOQuery1.Parameters.ParamByName('s d').Value := ListBox2.Items.Strings[q2];
Viktor61 вне форума Ответить с цитированием
Старый 08.07.2021, 09:08   #7
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

судя по приведенной картинке у вас в ListBox1 (c датами) многочисленные повторы (3-4 раза каждое)
а для КАЖДОЙ из повторенных строк будут добавлены все данные из второго ListBox
Цитата:
но результат тот же((((
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 08.07.2021, 09:36   #8
Eugene_Stoun
Пользователь
 
Аватар для Eugene_Stoun
 
Регистрация: 14.06.2013
Сообщений: 56
По умолчанию

evg_m,
Цитата:
судя по приведенной картинке у вас в ListBox1 (c датами) многочисленные повторы (3-4 раза каждое)
а для КАЖДОЙ из повторенных строк будут добавлены все данные из второго ListBox
Дело в том, что дата так и должна выглядеть, и каждой дате соответствует запись в ListBox2
Учиться, учиться и еще раз учиться!
Eugene_Stoun вне форума Ответить с цитированием
Старый 08.07.2021, 10:05   #9
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от Eugene_Stoun Посмотреть сообщение
каждой дате соответствует запись в ListBox2
Количество строк ListBox1=ListBox2? один цикл ведь надо от 1й до последней записи ListBox, не?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 08.07.2021, 10:35   #10
Eugene_Stoun
Пользователь
 
Аватар для Eugene_Stoun
 
Регистрация: 14.06.2013
Сообщений: 56
По умолчанию

Aleksandr H.,
Цитата:
Количество строк ListBox1=ListBox2? один цикл ведь надо от 1й до последней записи ListBox, не?
Да от первой до последней записи, все верно.
Учиться, учиться и еще раз учиться!
Eugene_Stoun вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Филтр в Listbox, удаление выбранной строки в Listbox в таблице Pavel1155 Microsoft Office Excel 1 12.02.2019 13:19
[РЕШЕНО]: ListBox: как добавить из TStringList текст через 1 строку, чтобы в listBox данные располагались на чётных/нечётных позициях? pas2 Помощь студентам 2 21.03.2017 20:54
Добавление строк c listbox на listbox WinApi Alll_ Visual C++ 1 21.11.2013 03:34
используя процедуру keypress и фунцию listbox.при нажатии на listbox менялась ее высота Алекс38 Общие вопросы Delphi 1 19.09.2012 19:36
как добавить в listbox файлы(пишу с помощью bassplayer)(Listbox+opendialog=play) blackstersl Общие вопросы Delphi 11 09.06.2010 13:23