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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2014, 12:36   #1
spotip
Пользователь
 
Регистрация: 09.06.2010
Сообщений: 68
По умолчанию CheckListBox1 добавление содержимого item в бд

есть CheckListBox1 в items прописан некий текст, как при установке галочки возле определённого текста внести этот текст в бд Microsoft SQL2008r, делаю так:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
add:String;
i : integer;
begin
for i:=0 to CheckListBox1.Items.Count-1 do
if CheckListBox1.Checked[i] then

add:=quotedstr(Unit1.Form1.CheckListBox1.Items.Strings[i]);
with Unit2.DataModule2.HelpQuery1 do
begin
close;
SQL.clear;
SQL.Add('exec new_tur '+add);
ExecSQL;
Unit2.DataModule2.Tur_Query1.Active:=False;
Unit2.DataModule2.Tur_Query1.Active:=True;
end;
end;
выдаёт list index out of bounds (6),
делаю так:
a
Код:
dd:=quotedstr(Unit1.Form1.CheckListBox1.Items.GetText);
в базу пишет все записи items, подскажите как реализовать.
spotip вне форума Ответить с цитированием
Старый 18.04.2014, 13:12   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Выход за пределы массива. По идее здесь
Код:
for i:=0 to CheckListBox1.Items.Count-1 do
if CheckListBox1.Checked[i] then

add:=quotedstr(Unit1.Form1.CheckListBox1.Items.Strings[i]);
но тут все правильно, за исключением того, что выберется только текст по последней галочке. И галочек вообще может не быть (что в базу тогда запишешь?). Подозреваю, что ошибка в другом участке кода

Как ведет себя так:
Код:
for i:=0 to CheckListBox1.Items.Count-1 do
  if CheckListBox1.Checked[i] then add:=quotedstr(CheckListBox1.Items.Strings[i]);

или

for i:=0 to CheckListBox1.Count-1 do
  if CheckListBox1.Checked[i] then add:=quotedstr(CheckListBox1.Items.Strings[i]);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 18.04.2014, 13:45   #3
spotip
Пользователь
 
Регистрация: 09.06.2010
Сообщений: 68
По умолчанию

Как ведет себя так:
Код:
for i:=0 to CheckListBox1.Items.Count-1 do
  if CheckListBox1.Checked[i] then add:=quotedstr(CheckListBox1.Items.Strings[i]);

или

for i:=0 to CheckListBox1.Count-1 do
  if CheckListBox1.Checked[i] then add:=quotedstr(CheckListBox1.Items.Strings[i]);
[/QUOTE]

и в первом и во втором примере пишет: list index out of bounds (6), 6 я так понимаю количество горизонтальных строк записанные в items
ну а на счёт что в базу запишу при 0 значении, ну поидее я могу в базе разрешить пустое значение, как-то так наверное.
Может я зря эту кухню затеял, может в dbgrid есть возможность из Pick List a выбрать два и более значения ?, одно выпадающее значение вносить у меня получается а вот 2...и более никак.

Последний раз редактировалось spotip; 18.04.2014 в 15:07.
spotip вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Item Listbox Афанасий[vedma] Компоненты Delphi 1 07.05.2012 13:49
SysListView32 Добавление Item (чужой процесс) custanator Win Api 10 06.04.2011 14:30
Многострочные Item'ы в CheckListBox'е ex.cluz Компоненты Delphi 0 09.06.2010 22:10
item s1s1s1 Общие вопросы Delphi 2 07.10.2009 13:44
checkListBox1.OnMouseDown не работет при выделенном элементе. Как исправить? Izhic Компоненты Delphi 4 28.10.2008 17:41