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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2012, 10:42   #11
xxbesoxx
Участник клуба
 
Аватар для xxbesoxx
 
Регистрация: 10.08.2010
Сообщений: 1,392
По умолчанию

Цитата:
Сообщение от Прик Посмотреть сообщение
В компоненте с именем ListSelect (TList) содержатся значения идентификаторов строк, которые были отмечены (в таблице это поле имеет наименование "ID").
Используя запомненные в ListSelect значения, можно манипулировать записями таблицы.
Удалять, например, можно так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  I : Integer;
  S : string;
begin
  S := '';
  for I := 0 to ListSelect.Count-1 do
    S := S + IntToStr(Integer(ListSelect.Items[I]))+',';
  if S = '' then Exit;
  S := '('+Copy(S, 1, Length(S)-1)+')';
  ADOQuery2.SQL.Text := 'delete from test where ID in ' + S;
  ADOQuery2.ExecSQL;
  
  ADOQuery1.DisableControls;
  ADOQuery1.Close;
  ADOQuery1.Open;
  ADOQuery1.EnableControls;
end;
Что значит копировать - непонятно. Прежде всего надо бы знать КУДА копировать и КАКИЕ поля.
Удалить работает Спасибоооооооооооо это просто чуда

Код:
procedure TForm1.BitBtn2Click(Sender: TObject);
var
  I : Integer;
  S : string;
begin
  S := '';
  for I := 0 to ListSelect.Count-1 do
    S := S + IntToStr(Integer(ListSelect.Items[I]))+',';
  if S = '' then Exit;
  S := '('+Copy(S, 1, Length(S)-1)+')';
  tab1Query.SQL.Text := 'delete from tab1 where ID in ' + S;
  tab1Query.ExecSQL;
  tab1Query.SQL.Clear;
  tab1Query.SQL.Add('select* From tab1');
  tab1Query.Open;

 
end;
А как будет из одно таблицу копировать на второй как на моего примере
xxbesoxx вне форума Ответить с цитированием
Старый 07.10.2012, 14:40   #12
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Цитата:
Запрос на Удаление запись не работает
У меня работает. Проверено.
В показанном на картинке копировании не вижу смысла.

P.S. А вложение какое отношение имеет к теме? Может быть попытаетесь сосредоточиться и выкладывать то что нужно.
Прик вне форума Ответить с цитированием
Старый 07.10.2012, 15:07   #13
xxbesoxx
Участник клуба
 
Аватар для xxbesoxx
 
Регистрация: 10.08.2010
Сообщений: 1,392
По умолчанию

Цитата:
Сообщение от Прик Посмотреть сообщение
У меня работает. Проверено.
В показанном на картинке копировании не вижу смысла.

P.S. А вложение какое отношение имеет к теме? Может быть попытаетесь сосредоточиться и выкладывать то что нужно.
Не почему нет смысла ? Если мы отметили несколько строк из tab1 что мы умеем делать на это отмеченные строку ? Только удалить ? не достаточно только это что принимать это пример реально программу. Копировать из одно таблицу на другого это иногда очень приятно {точка зрения пользователи}
Нужно копировать это очень приятно . Я вас очень прошу помогите написать на это примеру копировать из Tab1 на tab2

Последний раз редактировалось xxbesoxx; 07.10.2012 в 15:14.
xxbesoxx вне форума Ответить с цитированием
Старый 07.10.2012, 16:14   #14
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Например, так:
Код:
procedure TForm1.Button2Click(Sender: TObject);
var
  I : Integer;
begin
  for I := 0 to ListSelect.Count-1 do begin
    ADOQuery1.Locate('ID', Integer(ListSelect.Items[I]), []);
    ADOQuery2.SQL.Text := 'insert into Tab2(FirstName, ListName) values('+
                              QuotedStr(ADOQuery1.FieldByName('FirstName').AsString)+','+
                              QuotedStr(ADOQuery1.FieldByName('ListName').AsString)+')';
    ADOQuery2.ExecSQL;
  end;
end;
Уметь делать - это одно, а нужно ли это делать в каждый конкретный момент - это другое.
Прик вне форума Ответить с цитированием
Старый 07.10.2012, 16:51   #15
xxbesoxx
Участник клуба
 
Аватар для xxbesoxx
 
Регистрация: 10.08.2010
Сообщений: 1,392
По умолчанию

Цитата:
Сообщение от Прик Посмотреть сообщение
Например, так:
Код:
procedure TForm1.Button2Click(Sender: TObject);
var
  I : Integer;
begin
  for I := 0 to ListSelect.Count-1 do begin
    ADOQuery1.Locate('ID', Integer(ListSelect.Items[I]), []);
    ADOQuery2.SQL.Text := 'insert into Tab2(FirstName, ListName) values('+
                              QuotedStr(ADOQuery1.FieldByName('FirstName').AsString)+','+
                              QuotedStr(ADOQuery1.FieldByName('ListName').AsString)+')';
    ADOQuery2.ExecSQL;
  end;
end;
Уметь делать - это одно, а нужно ли это делать в каждый конкретный момент - это другое.
ОГРОМНОЕ СПАСИБО Люди тебя не забудеть РАБОТАЕТ ОТЛИЧНО

Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  I : Integer;
begin
  for I := 0 to ListSelect.Count-1 do begin
    tab1Query.Locate('ID', Integer(ListSelect.Items[I]), []);
    tab2Query.SQL.Text := 'insert into Tab2(FirstName, ListName) values('+
                              QuotedStr(tab1Query.FieldByName('FirstName').AsString)+','+
                              QuotedStr(tab1Query.FieldByName('ListName').AsString)+')';
    tab2Query.ExecSQL;
    tab2Query.SQL.Clear;
    tab2Query.SQL.Add('select* From tab2');
    tab2Query.Open;
  end;

end;
xxbesoxx вне форума Ответить с цитированием
Старый 07.10.2012, 17:13   #16
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Код:
    tab2Query.SQL.Clear;
    tab2Query.SQL.Add('select* From tab2');
    tab2Query.Open;
Абсолютно бесполезная конструкция внутри цикла.
select надо делать после цикла.
Прик вне форума Ответить с цитированием
Старый 07.10.2012, 20:36   #17
xxbesoxx
Участник клуба
 
Аватар для xxbesoxx
 
Регистрация: 10.08.2010
Сообщений: 1,392
По умолчанию

Цитата:
Сообщение от Прик Посмотреть сообщение
Код:
    tab2Query.SQL.Clear;
    tab2Query.SQL.Add('select* From tab2');
    tab2Query.Open;
Абсолютно бесполезная конструкция внутри цикла.
select надо делать после цикла.
Не надо, после обновления tab2 не показывает , Проверите пожалуйста
Вложения
Тип файла: rar CheckBox+DBGridEh+test.rar (525.2 Кб, 28 просмотров)
xxbesoxx вне форума Ответить с цитированием
Старый 07.10.2012, 21:32   #18
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Запись в БД нужно делать другим компонентом, а не тем, который показывает данные к гриде:
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  I : Integer;
begin
  for I := 0 to ListSelect.Count-1 do begin
    tab1Query.Locate('ID', Integer(ListSelect.Items[I]), []);
    Query.SQL.Text := 'insert into Tab2(FirstName, ListName) values('+
                              QuotedStr(tab1Query.FieldByName('FirstName').AsString)+','+
                              QuotedStr(tab1Query.FieldByName('ListName').AsString)+')';
    Query.ExecSQL;
  end;
  tab2Query.Close;
  tab2Query.Open;
end;
Здесь Query - новый компонент специально предназначенный для модификации данных в БД.
Его же надо применять и при удалении.
Прик вне форума Ответить с цитированием
Старый 08.10.2012, 00:28   #19
xxbesoxx
Участник клуба
 
Аватар для xxbesoxx
 
Регистрация: 10.08.2010
Сообщений: 1,392
По умолчанию

Цитата:
Сообщение от Прик Посмотреть сообщение
Запись в БД нужно делать другим компонентом, а не тем, который показывает данные к гриде:
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  I : Integer;
begin
  for I := 0 to ListSelect.Count-1 do begin
    tab1Query.Locate('ID', Integer(ListSelect.Items[I]), []);
    Query.SQL.Text := 'insert into Tab2(FirstName, ListName) values('+
                              QuotedStr(tab1Query.FieldByName('FirstName').AsString)+','+
                              QuotedStr(tab1Query.FieldByName('ListName').AsString)+')';
    Query.ExecSQL;
  end;
  tab2Query.Close;
  tab2Query.Open;
end;
Здесь Query - новый компонент специально предназначенный для модификации данных в БД.
Его же надо применять и при удалении.
Но это да , Я просто на это примере сделаю Select* from tab2 Ф так не нужно вы прав . Но самое главное что вы дали готовы пример, Это очень приятно точка зрения { пользователи} такого предложишь заказчику 98% согласится и действительно удобно....... ЕЩЕ РАЗ ОГРОМНОЕ СПАСИБО Прик
xxbesoxx вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
checkbox в dbgrideh nervniy БД в Delphi 3 20.10.2010 18:01
DBGridEh Багдат87 Компоненты Delphi 1 02.10.2010 18:37
DBGridEh vdalest БД в Delphi 0 08.07.2010 23:05
Использование Checkbox в DBGridEh SlavaSH БД в Delphi 3 25.11.2009 17:16
из DBGridEh в Exel Abay БД в Delphi 3 18.09.2007 09:10