Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 26.04.2012, 12:29
AlexGTX AlexGTX вне форума
Прохожий
 
Регистрация: 19.04.2012
Сообщения: 24
Репутация: 10
По умолчанию Копирование выделенной строки DBGrid в другую таблицу

И снова здравствуйте! Во-первых хочу еще раз поблагодарить все тех кто отзывается на описываемые проблемы, земной вам всем поклон.
Теперь суть новой проблемы. В DBGrid (таблица OsSklad)выделяется строка, в ней есть поле Ostatok(хранит целые числа количества товара). Эту строку по нажатию на кнопку надо перенести в другую таблицу (Mag1 или Mag2, выбираются в ComboBox), предварительно в Edit-е указав количетво переносимого товара, если остаток товара в исходной таблице равен 0 то строка удаляется. Одновременно с Mag1 или Mag2 строка товара добавляется в таблицу SProd, в которой будет хранится сумма остатка одного и того же товара из двух магазинов. Вот примерно так. Задача немаленькая, поэтому буду рад любой помощи. Заранее спасибо!
Ответить с цитированием
  #2  
Старый 26.04.2012, 12:52
Аватар для Ildar-tsr
Ildar-tsr Ildar-tsr вне форума
Местный
 
Регистрация: 09.08.2011
Адрес: г.Сургут, ХМАО
Сообщения: 453
Репутация: 7402
По умолчанию

В целом принцип:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  q: TADOQuery;
begin
  q:= TADOQuery.Create(nil); 
  q.Connection:= ADOConnection1; 

  if DBGrid.DataSource.DataSet.FieldByName('Ostatok').AsInteger <> 0 then
    begin
      //вставка в Mag
      q.SQL.Text:= 'insert into '+ComboBox1.Text+' (...) values (...)';
      q.SQL.ExecSQL;
      
      //вставка в SProd
      q.SQL.Text:= 'insert into SProd (...) values (...)';
      q.SQL.ExecSQL;      
    end;

  //из OsSklad удаляем по любому
  q.SQL.Text:= 'delete from OsSklad where id = '+DBGrid.DataSource.DataSet.FieldByName('id').AsString;
  q.ExecSQL;

  q.Free;
end;
__________________
Google в помощь
Ответить с цитированием
  #3  
Старый 26.04.2012, 13:23
AlexGTX AlexGTX вне форума
Прохожий
 
Регистрация: 19.04.2012
Сообщения: 24
Репутация: 10
По умолчанию

Это с ADO, а с BDE (Paradox) тоже самое? Там наверное ADOConection уже не нужен?
Ответить с цитированием
  #4  
Старый 26.04.2012, 14:07
Аватар для Ildar-tsr
Ildar-tsr Ildar-tsr вне форума
Местный
 
Регистрация: 09.08.2011
Адрес: г.Сургут, ХМАО
Сообщения: 453
Репутация: 7402
По умолчанию

Цитата:
Сообщение от AlexGTX
Это с ADO, а с BDE (Paradox) тоже самое? Там наверное ADOConection уже не нужен?
Ну естественно "под себя" переделать надо немного.
__________________
Google в помощь
Ответить с цитированием
  #5  
Старый 26.04.2012, 14:35
AlexGTX AlexGTX вне форума
Прохожий
 
Регистрация: 19.04.2012
Сообщения: 24
Репутация: 10
По умолчанию

А к выбраной строке Grid как обратится?
Ответить с цитированием
  #6  
Старый 26.04.2012, 14:46
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от AlexGTX
А к выбраной строке Grid как обратится?
выбраная строка DBGrid это текущая запись в DataSet.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #7  
Старый 26.04.2012, 15:08
AlexGTX AlexGTX вне форума
Прохожий
 
Регистрация: 19.04.2012
Сообщения: 24
Репутация: 10
По умолчанию

DBGrid.SelectedField.AsString; Таким образом происходит обращение к строке Grid, а как ее скопировать в другую таблицу причем отнять от поля Ostatok какое-либо числовое значение???
Ответить с цитированием
  #8  
Старый 26.04.2012, 15:26
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
Table2.FieldByName('Ostatok').AsInteger:=DBGrid1.DataSource.DataSet.FieldByName('Ostatok').AsInteger-100500;
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #9  
Старый 26.04.2012, 17:19
AlexGTX AlexGTX вне форума
Прохожий
 
Регистрация: 19.04.2012
Сообщения: 24
Репутация: 10
По умолчанию

Блиннннн , не фига я втыкаю(((, напишите поподробнее как из DBGrid(OsSklad) перенести выделенную строку в другую таблицу (Mag1)с вычисляемым полем Ostatok(отнимаемое количество вводится в Edit). В принимающей таблице (Mag1)Ostatok будет равен OsSklad.Ostatok - Edit1.
Как это корректно программно записать?????
Ответить с цитированием
  #10  
Старый 27.04.2012, 08:46
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
  Mag1.Insert; // Mag1.Edit;
  Mag1.FieldByName('Ostatok').AsInteger:=
    DBGrid1.DataSource.DataSet.FieldByName('Ostatok').AsInteger-
    StrToInt(Edit1.Text);
  Mag1.Post;
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
AlexGTX (07.05.2012)
  #11  
Старый 07.05.2012, 14:46
AlexGTX AlexGTX вне форума
Прохожий
 
Регистрация: 19.04.2012
Сообщения: 24
Репутация: 10
По умолчанию

Спасибо за помощь!!! Разобрался что к чему!!! Вот код для кто решает такую же проблему:
TabSpisanie.Insert;
TabSpisanie.FieldByName('Data').AsDateTime:= DateTimePicker4.Date;
TabSpisanie.FieldByName('Artic').AsInteger:= DBGrid1.DataSource.DataSet.FieldByName('Artic').As Integer;
TabSpisanie.FieldByName('Name').AsString:= DBGrid1.DataSource.DataSet.FieldByName('Name').AsS tring;
TabSpisanie.FieldByName('Type').AsString:= DBGrid1.DataSource.DataSet.FieldByName('Type').AsS tring;
TabSpisanie.FieldByName('Pol').AsString:= DBGrid1.DataSource.DataSet.FieldByName('Pol').AsSt ring;
TabSpisanie.FieldByName('Material').AsString:= DBGrid1.DataSource.DataSet.FieldByName('Material') .AsString;
TabSpisanie.FieldByName('Firma').AsString:= DBGrid1.DataSource.DataSet.FieldByName('Firma').As String;
TabSpisanie.FieldByName('Strana').AsString:= DBGrid1.DataSource.DataSet.FieldByName('Strana').A sString;
TabSpisanie.FieldByName('Ostatok').AsInteger:=StrT oInt(Edit3.Text);
TabSpisanie.FieldByName('Cena').AsInteger:= DBGrid1.DataSource.DataSet.FieldByName('Cena').AsI nteger;
TabSpisanie.Post;
Здесь копируются поля из выделенной строки Grid в другую таблицу.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:20.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter