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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2013, 17:13   #1
Andrej_K
Форумчанин
 
Регистрация: 27.07.2013
Сообщений: 256
По умолчанию Синхронизация строк CheckListBox со строками поля БД

Подозреваю, что спрашиваю элементарщину, но пока трудно самому связать начальные знания в единое целое.
Нужен пример кода, который синхронно с изменениями CheckListBox вносил бы изменения в строки БД. По-простому, необходима реализация возможности удаления, добавления и редактирования строк (слов) БД, выводимых в CheckListBox… Или, если можно сказать по-другому, необходима реализация управления данными через CheckListBox.

Пробовал вот это:
Код:
procedure TForm_GlavnoeOkno.Button_UdalitSlovoClick(Sender: TObject);
 var
 i : Integer;
 begin
 i:=0;
 while i<CheckListBox_SpisokSlov.Count do
 if CheckListBox_SpisokSlov.Checked[i] then CheckListBox_SpisokSlov.Items.Delete(i) else Inc(i);
 end;
Но после первого запуска увидел, что это влияет только на CheckListBox, а БД всё по-барабану. БД локальная, Access.
Andrej_K вне форума Ответить с цитированием
Старый 25.12.2013, 19:13   #2
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

1. Даже расширив все мыслимые и немылсимые фантазии не могу представить зачем управлять таблицей через CheckListBox? Ну, да лан...
2. Где в приведенном коде есть хоть одна строчка, которая влияет на БД?
Там написано в цикле, что если item отмечен, то удалить его, иначе перейти к следующему. И все.
3. БД не имеет строк. Строки хранятся в наборах данных (DataSet, который называют таблицей).
4. В таблице НИКОГДА и НИГДЕ нельзя ничего связывать по строковым полям (т.е. по словам). Любая связь должна производиться по ключевым полям. Плюс каждая таблица должна иметь Первичный ключ (обычно это поле называют ID (идентификатор записи)).

В данном случае алгоритм действий такой:
- в item CheckListBox-а есть слово.
- найти это слово в таблице можно несколькими способами:
а) выполнить sql-запрос (лучший способ)
б) функцией locate(...)
в) функцией lookup(...)
г) выполнить GotoKey или GotoNearest

Далее...
Если item не отмечен и он есть в таблице - удаляем его.
Если item отмечен и он есть - ничего не делаем. Если нету - добавляем.

А редактирование без ключа не получится... Представьте, было в чекбоксе и в таблице слово собака. Вы его изменили на слово волк и отметили этот item.
Какую запись нужно апдейтить в таблице? Неизвестно.
Поэтому вся система изначально неработоспособна.

А должно быть так:
Код:
update table set field = 'волк' where id= :ID
и никак иначе.
_SERGEYX_ вне форума Ответить с цитированием
Старый 25.12.2013, 20:24   #3
Andrej_K
Форумчанин
 
Регистрация: 27.07.2013
Сообщений: 256
По умолчанию

Расширяем фантазию за немыслимые пределы)
Я хочу сделать вот такой список, где можно отметить слова, которые необходимо или удалить, или изменить.

И ещё вопрос, из локального приложения синтаксис обращения к лакальной и серверной базам данных одиноков?
Изображения
Тип файла: jpg pic.jpg (12.4 Кб, 111 просмотров)

Последний раз редактировалось Andrej_K; 25.12.2013 в 20:34.
Andrej_K вне форума Ответить с цитированием
Старый 25.12.2013, 20:33   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А слов всего 9? А больше, 99 скажем. Исключено?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.12.2013, 20:49   #5
Andrej_K
Форумчанин
 
Регистрация: 27.07.2013
Сообщений: 256
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А слов всего 9? А больше, 99 скажем. Исключено?
Не совсем понятен вопрос. Слов может быть бесконечное множество, Ну, не совсем бесконечное, а в пределах языка)
Andrej_K вне форума Ответить с цитированием
Старый 25.12.2013, 21:32   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Расширяем фантазию за немыслимые пределы
Цитата:
Ну, не совсем бесконечное, а в пределах языка
Расширил и представил в столбик на экране пару тысяч чекбоксов. Весьма оригинально
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.12.2013, 21:41   #7
Andrej_K
Форумчанин
 
Регистрация: 27.07.2013
Сообщений: 256
По умолчанию

Немного в другое русло переходит тема, но отвечу.
Дело в том, что хоть 10 тысяч чекбоксов, потому что должна быть возможность управления каждым словом в отдельности. Сократить список вывода можно фильтрами, но доступ должен быть к каждому слову. Если есть возможность получить доступ к 999 слову, отображая только 20 слов, поделитесь. Поиск не подойдёт, т. к., если нужно найти слово с орфографической ошибкой, то мы не будем заранее знать, в каком слове она закралась при вводе в базу данных.
Andrej_K вне форума Ответить с цитированием
Старый 25.12.2013, 21:49   #8
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

А не пробовали найти ошибку в однотомном словаре Ожегова - всего один том?
ReportCube вне форума Ответить с цитированием
Старый 25.12.2013, 22:01   #9
Andrej_K
Форумчанин
 
Регистрация: 27.07.2013
Сообщений: 256
По умолчанию

Цитата:
Сообщение от ReportCube Посмотреть сообщение
А не пробовали найти ошибку в однотомном словаре Ожегова - всего один том?
Как же всё-таки сделать так, как на картинке ниже? Может это можно без ЧекЛистБокса сделать? Я всего лишь в этом прошу помощи, надеясь на опыт сдешних гуру, которые могут подсказать уже кем-то давно найденное изящное решение или просто рациональное и практичное. Я пока кроме ЧекЛистБокса ничего не представляю. Вообще в идеале было бы по двойному клику на слове (не на чекбоксе) переводить слово в режим редактирования и после нажатия Ввода вносить изменения в БД.

Я не прошу полностью готовый код ()это было бы хорошо, если не сложно), но вот хотя бы алгоритм реализации. Только без жаргонизмов, сокращений и т. д., я ещё не настолько в теме.

К слову сказать, картинка из программы Adobe Bridge.

Последний раз редактировалось Andrej_K; 25.12.2013 в 22:06.
Andrej_K вне форума Ответить с цитированием
Старый 25.12.2013, 22:05   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

ADOQuery , DataSource и DBGrid. Сфокусируйтесь на этом вначале
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
access. изменить значение поля у 20% строк выборки Revival001 SQL, базы данных 3 23.05.2013 01:35
checklistbox запись отмеченных строк _Fobos_ Компоненты Delphi 5 02.12.2012 20:59
MS Access 2003: Запись строк с завершающими пробелами в текстовые поля grh Microsoft Office Access 1 16.03.2012 16:13
Выделение строк по показанию поля б.д. Paradox в Dephi igi3 Помощь студентам 0 21.06.2011 15:33
HELP!Си - программа для работы со строками + сумма строк в матрице! DUPLET Помощь студентам 1 20.12.2007 21:16