![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
И снова здравствуйте!
Во-первых хочу еще раз поблагодарить все тех кто отзывается на описываемые проблемы, земной вам всем поклон. Теперь суть новой проблемы. В DBGrid (таблица OsSklad)выделяется строка, в ней есть поле Ostatok(хранит целые числа количества товара). Эту строку по нажатию на кнопку надо перенести в другую таблицу (Mag1 или Mag2, выбираются в ComboBox), предварительно в Edit-е указав количетво переносимого товара, если остаток товара в исходной таблице равен 0 то строка удаляется. Одновременно с Mag1 или Mag2 строка товара добавляется в таблицу SProd, в которой будет хранится сумма остатка одного и того же товара из двух магазинов. Вот примерно так. Задача немаленькая, поэтому буду рад любой помощи. Заранее спасибо! ![]() |
|
#2
|
||||
|
||||
|
В целом принцип:
Код:
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; |
|
#3
|
|||
|
|||
|
Это с ADO, а с BDE (Paradox) тоже самое? Там наверное ADOConection уже не нужен?
|
|
#4
|
||||
|
||||
|
Цитата:
|
|
#5
|
|||
|
|||
|
А к выбраной строке Grid как обратится?
|
|
#6
|
||||
|
||||
|
Цитата:
|
|
#7
|
|||
|
|||
|
DBGrid.SelectedField.AsString; Таким образом происходит обращение к строке Grid, а как ее скопировать в другую таблицу причем отнять от поля Ostatok какое-либо числовое значение???
![]() |
|
#8
|
||||
|
||||
|
Код:
Table2.FieldByName('Ostatok').AsInteger:=DBGrid1.DataSource.DataSet.FieldByName('Ostatok').AsInteger-100500; |
|
#9
|
|||
|
|||
|
Блиннннн
, не фига я втыкаю(((, напишите поподробнее как из DBGrid(OsSklad) перенести выделенную строку в другую таблицу (Mag1)с вычисляемым полем Ostatok(отнимаемое количество вводится в Edit). В принимающей таблице (Mag1)Ostatok будет равен OsSklad.Ostatok - Edit1.Как это корректно программно записать????? ![]() |
|
#10
|
||||
|
||||
|
Код:
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
|
|||
|
|||
|
Спасибо за помощь!!! Разобрался что к чему!!! Вот код для кто решает такую же проблему:
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 в другую таблицу. |