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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.09.2010, 12:13   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Вопрос Ctrl+R. Диалог замены в DBGrid.

Возможно ли организовать дилог замены текста как, например, в блокноте, который вызывается по комбинации Ctrl+R? Как сделать форму и как вызвать по комбинации я сделаю сам. Помогите мне с функцией замены части строки по столбцу в DBGrid-е?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 12.09.2010, 12:19   #2
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

Меняй не в DBGrid а в DataSet
_Engine_ вне форума Ответить с цитированием
Старый 12.09.2010, 12:24   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Ок, попробую. Даже кажется понял как сделать. Через UPDATE. ...... хотя нет, не получится)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 12.09.2010, 12:27   #4
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

Можно и через Locate + Edit + Post
_Engine_ вне форума Ответить с цитированием
Старый 12.09.2010, 12:29   #5
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

А если я сделаю через UPDATE то он мне заменить только конкретно то, что я указал??
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 12.09.2010, 12:30   #6
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

да, именно так
_Engine_ вне форума Ответить с цитированием
Старый 12.09.2010, 12:33   #7
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

artemavd, вариант с циклом или Locate рабочий, НО при большом кол-ве данных операция затянется надолго.
Можно сделать через UPDATE используя хранимую процедуру. Если тебе для IB или FB - поищу пример
Ведь если я тебя правильно понял - тебе нужно в строке ааааа1111бббб заменить именно подстроку 1111 .... верно ???
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 12.09.2010, 12:48   #8
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Да, верно. И записей будет очень много, база будет быстро и по-многу заполняться. Сейчас попробую сделать через UPDATE. Я читал, что спарки очень быстро работает с террабайтными базами. Тормоза мне не нужны .

Вот, попробовал через UPDATE сделать, получил в лоб ошибкой. Код:
Код:
procedure TForm2.BitBtn1Click(Sender: TObject);
begin
 Form2.pFIBQuery1.SQL.Clear;
 Form2.pFIBQuery1.SQL.Text:='UPDATE ARCHIVE SET PATH = :NP WHERE PATH='+Form2.Edit1.Text;
 Form2.pFIBQuery1.ParamByName('NP').Value:=Form2.Edit2.Text;
 Form2.pFIBQuery1.ExecQuery;
// Form1.pFIBDataSet1.Close;
// Form1.pFIBDataSet1.Open;
end;
Применил функцию QuotedStr, ошибка исчезла, но и замена не происходит . Сейчас код такой:
Код:
procedure TForm2.BitBtn1Click(Sender: TObject);
begin
 Form2.pFIBQuery1.SQL.Clear;
 Form2.pFIBQuery1.SQL.Text:='UPDATE ARCHIVE SET PATH = :NP WHERE PATH='+QuotedStr(Form2.Edit1.Text);
 Form2.pFIBQuery1.ParamByName('NP').Value:=Form2.Edit2.Text;
 Form2.pFIBQuery1.ExecQuery;
// Form1.pFIBDataSet1.Close;
// Form1.pFIBDataSet1.Open;
end;
Изображения
Тип файла: png Безымянный.png (23.9 Кб, 47 просмотров)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.

Последний раз редактировалось artemavd; 12.09.2010 в 13:02.
artemavd вне форума Ответить с цитированием
Старый 12.09.2010, 13:06   #9
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

таким образом у тебя не получится т.к. этим ты строку "ааааа1111бббб" в лоб перебьешь на новую строку, А НЕ заменишь только нужную подстроку
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 12.09.2010, 13:07   #10
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Как быть-то?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копировать текст из webbrowser в memo (включить ctrl+c ctrl+v) копировать - вставить Alar Работа с сетью в Delphi 13 12.07.2010 18:16
Замены Igorec Общие вопросы C/C++ 2 22.02.2010 20:15
Макрос пакетной замены swan1976 Microsoft Office Word 2 26.12.2009 17:48
Диалог замены файла kiber_punk Общие вопросы Delphi 2 24.10.2008 10:02
Проблема с функцией замены... dast Microsoft Office Excel 6 09.10.2008 20:30