Topic: Из письма.

Дмитрий, доброго времени,

Есть таблица с материалами, в ней ключ к таблице с вендорами (прил 1).
Есть поле МЕМО. при нажатии записи вендоров в таблице, скрипт хватает его ид и заносит данные в поле МЕМО.
Загвоздка в том, что материалов может быть несколько и я не могу найти способ перечислить их в цикле, один за другим.

Post's attachments

Attachment icon 1.png 7.22 kb, 128 downloads since 2020-03-16 

с Ув. Андрей

2 (edited by andrey.yugay 2020-03-16 14:38:35)

Re: Из письма.

andrey.yugay wrote:

Дмитрий, доброго времени,

Есть таблица с материалами, в ней ключ к таблице с вендорами (прил 1).
Есть поле МЕМО. при нажатии записи вендоров в таблице, скрипт хватает его ид и заносит данные в поле МЕМО.
Загвоздка в том, что материалов может быть несколько и я не могу найти способ перечислить их в цикле, один за другим.

программа приаттачена:
код в части: procedure form1_TableGrid1_OnCellClick (Sender: TObject; ACol, ARow: Integer); 
...
            for rows :=1 to i do
            begin
                Form1.XML.Lines.Add('          <product>');
                Form1.XML.Lines.Add('            <ndsAmount>0</ndsAmount>');
                Form1.XML.Lines.Add('            <priceWithTax>'+ IntToStr(m) +'</priceWithTax>');
                m:=m+1;

            end;
...
еще загвоздка, что id материала могут идти не по порядку (т.е. пользователь, может что-то удалить)

Post's attachments

Attachment icon 1_SNT_IMPORT_MAIN — копия.7z 30.48 kb, 243 downloads since 2020-03-16 

с Ув. Андрей

Re: Из письма.

В приложенной вами проекте нет файла forms.xml, поэтому его никак не открыть.

Dmitry.

Re: Из письма.

DriveSoft wrote:

В приложенной вами проекте нет файла forms.xml, поэтому его никак не открыть.

Извините, перезалил

с Ув. Андрей

Re: Из письма.

Если я правильно понял, вам необходимо сгенерировать XML документ, в котором присутствуе раздел с материалами, которые принадлежат выбранному вендору.


Для этого вам необходимо выполнять SQL запро с помощью функции SQLQuery.


добавьте в данную процедуру переменную Results

procedure form1_TableGrid1_OnCellClick (Sender: TObject; ACol, ARow: Integer);
var
    Results: TDataSet;
begin
...

затем вместо этого участка,

            for rows :=1 to i do
            begin
                Form1.XML.Lines.Add('          <product>');
                Form1.XML.Lines.Add('            <ndsAmount>0</ndsAmount>');
                Form1.XML.Lines.Add('            <priceWithTax>'+ IntToStr(m) +'</priceWithTax>');
                m:=m+1;

            end;

сделайте так

    SQLQuery('SELECT g17 FROM material WHERE id_vendor='+form1.tablegrid1.sqlValue, Results);

    while not Results.Eof do
    begin
        Form1.XML.Lines.Add('          <product>');
        Form1.XML.Lines.Add('            <ndsAmount>0</ndsAmount>');
        Form1.XML.Lines.Add('            <priceWithTax>'+ Results.FieldByName('g17').asString +'</priceWithTax>');
        Form1.XML.Lines.Add('          </product>');
        Results.Next;
    end;

    Form1.XML.Lines.Add('        </products>');
Dmitry.

Re: Из письма.

Да, идет генерация XML, попробую ваш метод.
заранее благодарю, вы как всегда на высоте!

DriveSoft wrote:

Если я правильно понял, вам необходимо сгенерировать XML документ, в котором присутствуе раздел с материалами, которые принадлежат выбранному вендору.


Для этого вам необходимо выполнять SQL запро с помощью функции SQLQuery.


добавьте в данную процедуру переменную Results

procedure form1_TableGrid1_OnCellClick (Sender: TObject; ACol, ARow: Integer);
var
    Results: TDataSet;
begin
...

затем вместо этого участка,

            for rows :=1 to i do
            begin
                Form1.XML.Lines.Add('          <product>');
                Form1.XML.Lines.Add('            <ndsAmount>0</ndsAmount>');
                Form1.XML.Lines.Add('            <priceWithTax>'+ IntToStr(m) +'</priceWithTax>');
                m:=m+1;

            end;

сделайте так

    SQLQuery('SELECT g17 FROM material WHERE id_vendor='+form1.tablegrid1.sqlValue, Results);

    while not Results.Eof do
    begin
        Form1.XML.Lines.Add('          <product>');
        Form1.XML.Lines.Add('            <ndsAmount>0</ndsAmount>');
        Form1.XML.Lines.Add('            <priceWithTax>'+ Results.FieldByName('g17').asString +'</priceWithTax>');
        Form1.XML.Lines.Add('          </product>');
        Results.Next;
    end;

    Form1.XML.Lines.Add('        </products>');
с Ув. Андрей

Re: Из письма.

Дмитрий, спасибо вам за помощь.
Подскажите, пожалуйста, есть задача выполнить скрипт в SAP, что бы получить данные.
Если ли возможность запускать его из под программы...т.е. в программе написать скрипт на запуск SAP (опред системы), а потом запустить SAP скрипт?
пример запуска у меня есть только для vba(((

  //Shell "C:\Program Files (x86)\SAP\FrontEnd\SAPgui\saplogon.exe", vbNormalFocus
  //Set WSHShell = CreateObject("WScript.Shell")
// Do Until WSHShell.AppActivate("SAP Logon ")
// Loop
// Set WSHShell = Nothing
// Set SapGui = GetObject("SAPGUI")
// Set Applic = SapGui.GetScriptingEngine
// Set connection = Applic.OpenConnection("13  QR2  QAS ERP  Europe [Logon Balanced]", True)
  //Set session = connection.Children(0)
  //  session.FindById("wnd[0]").Maximize



  //Set session = Nothing
// connection.CloseSession ("ses[0]")
// Set connection = Nothing
// Set sap = Nothing
// MsgBox "Done"

Пожалуйста, направьте где поискать, почитать.

Заранее благодарю, Андрей

с Ув. Андрей