mojaSymfonia FORUM
https://forum.mix-soft.pl/

Własne pola ZMO i Pozycje - jak pobrać?
https://forum.mix-soft.pl/viewtopic.php?f=15&t=9473
Strona 1 z 1

Autor:  wojtek [ 2020-02-28, 19:07 ]
Tytuł:  Własne pola ZMO i Pozycje - jak pobrać?

Jak w temacie - robiłem podobne rzeczy związane z wymiarami:
Kod:
.....
xWymiarDef = xFactory.NewObject("BDefinicjaWymiaru")
xWymiarDef.Load()
wymCount = xWymiarDef.count()
......


Jak poprać wartość własnych pól Ambasic, albo jeszcze lepiej SQL - szukałem ale nie mogę znaleźć w bazie danych?
W jakiej tabeli są własne pola i jak wiążą się z dokumentem ZMO lub jego pozycją?

Z góry dziękuję za pomoc

Autor:  wojtek [ 2020-02-28, 23:03 ]
Tytuł:  Re: Własne pola ZMO i Pozycje - jak pobrać?

Sam sobie odpowiem :) może się komuś przyda

[BAZA].[SSCommon].[STDimensions]
[BAZA].[SSCommon].[HMF_SalesOrderClassification]
[BAZA].[SSCommon].[HMF_SalesOrderPositionClassification]

Autor:  wojtek [ 2020-02-29, 09:52 ]
Tytuł:  Re: Własne pola ZMO i Pozycje - jak pobrać?

Sam odpowiem sobie na pytanie - może komuś się przyda
Definicje własnych pól siedzą w:

[BAZA].[SSCommon].[STDimensions]

Ich powiązenie z dokumentem ZO w tabeli:

[Baza].[SSCommon].[HMF_SalesOrderClassification]

A dla pozycji ZO w tabeli
[Baza].[SSCommon].[HMF_SalesOrderPositionClassification]

Nazwa kolumn w dwóch ostatnich tabelach poprzedzona CDim_ to kod zdefiniowanego pola/Wymiaru.

Po napisaniu funkcji w programie pojawiła się niejasność - może ktoś wyjaśni bo nie rozumiem:
Bezpośrednie zapytanie do bazy:
Kod:
SELECT cdim_isCanceled as wartosc
  FROM testowa2.SSCommon.HMF_SalesOrderClassification where ElementId = 3801


Zwraca wartość 1 - jeśłi wartosć pola w programie ustawiona na True lub 0 gdy False

Gdy takie samo zapytanie wywołuję z pozycji amBasic funkcją:
Kod:
int sub czyAnulowane(long id,int czyPozycja,string kodWymiaru)
string s_Id = using "%l",id   
DISPATCH rs1, con1
rs1= "ADODB.Recordset"
con1 = GetAdoConnection()
string qZap1

if czyPozycja == 0 then
   qZap1 ="SELECT CDim_"+kodWymiaru+" AS wartosc FROM SSCommon.HMF_SalesOrderClassification where ElementId = "+s_Id
else
   qZap1 = "SELECT CDim_"+kodWymiaru+" AS wartosc FROM SSCommon.HMF_SalesOrderPositionClassification where ElementId = "+s_Id
endif

message qZap1

rs1.Open(qZap1, con1)   
//message using "%i",rs1.RecordCount
  //if rs1.RecordCount > 0 then
   message using "%i", rs1.Fields("wartosc").value
   //message using "%i",czyAnulowane
  //else
//   czyAnulowane = 0
  //endif
endsub


Dostaję wartość 0 dla False - i tu OK
albo -1 dla True....
Skąd ten minus? Nie rozumiem?

Strona 1 z 1 Strefa czasowa UTC+1godz. [letni]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/