HYDRA - zaznaczone pozycje

Zapytania SQL, widoki, Crystal, definicje filtrów, szybkich raportów, wydruków, API, Hydra, .NET

Moderator: mikey

laplace
Posty: 43
Rejestracja: 20 paź 2010, 09:23
Rola: Inny

HYDRA - zaznaczone pozycje

Post autor: laplace »

Cześć,
już kilka razy odczytywałem za pomocą Hydry zaznaczone pozycje, ale tym razem mam problem: chodzi o zaznaczone towary w oknie promocji. Używam standardowego kodu:

Kod: Zaznacz cały

            ADODB._Recordset recordset = Runtime.WindowController.GetQueueMarked((int)procedureId, idListy, GetCallbackThread());

            try
            {
                int count = recordset.RecordCount;

                if (count == 0)
                    return;

                recordset.MoveFirst();
                while (recordset.EOF == false)
                {
                    ADODB.Fields fields = recordset.Fields;
                    pokazKomunikat(fields.Count.ToString());
                    string field = fields[0].Value.ToString() + "," + fields[1].Value.ToString() + "," + fields[2].Value.ToString() + "," + fields[3].Value.ToString();
                    pokazKomunikat(field);
                    //idZaznaczonychPozycji.Add(Convert.ToInt32(field));
                    recordset.MoveNext();
                }
            }
            catch (Exception ex)
            {
                pokazKomunikat($"Błąd odczytu zaznaczonych: {ex.Message} ");
            }
Zwracane wartości zmieniają się od wiersza do wiersza (czyli mechanizm działa), ale nie potrafię z niczym ugryźć zwracanych wartości (nie są to na pewno żadne gidy z bazy (TwrPromocje)).
Może ktoś z Was pracował już z tym tematem ?

Pozdrawiam
Kuba

Awatar użytkownika
viesiek1
Posty: 416
Rejestracja: 03 maja 2011, 18:40
Rola: Administrator CDN XL
Wersja: 2023
Lokalizacja: Bielsko-Biała
Kontakt:

Re: HYDRA - zaznaczone pozycje

Post autor: viesiek1 »

Odczytuję ostatnio pozycje tak jak poniżej (sorry, że jako tekst, ale chciałem ci pogrubić fragment). Może tak uda się odczytać dane prawidłowo.

int lFsGidNumer = -1;

ADODB._Recordset lRecordset = Runtime.WindowController.GetQueueMarked((int)ProcId, gDocuments, GetCallbackThread());
int lCount = lRecordset.RecordCount;

if (lCount == 1)
{
var lFields = ((dynamic)lRecordset).Fields;

for (int i = 0; i < lFields.Count; i++)
{
var lField = lFields;
var lName = lField.Name;
var lValue = lField.Value;

if (String.Compare(lName.ToString().Trim(), "TYP", true) == 0 & Convert.ToInt32(lValue) != 2033)
{
Runtime.WindowController.UnlockThread();
MessageBox.Show("Wybrałeś inny typ dokumentu niż \"FS\"" + Environment.NewLine + "GidTyp: " + lValue.ToString(), "Informacja", MessageBoxButtons.OK, MessageBoxIcon.Warning);
Wiesław Świergała

tel: +48 33 829 54 50
e-mail: wieslaw.swiergala@hydro.com.pl

http://www.hydro.com.pl

laplace
Posty: 43
Rejestracja: 20 paź 2010, 09:23
Rola: Inny

Re: HYDRA - zaznaczone pozycje

Post autor: laplace »

Dzięki - efekt ten sam. Może źle się wyraziłem: dane są odczytywane - właściwości NAME, to TYP, FIRMA, NUMER oraz LP, ale wartości do nich przypięte nie pasują mi w żaden sposób do danych w bazie.
Na pozostałych listach nie miałem takiego problemu - zwracane wartości odpowiadały GIDom w bazie, a tutaj niespodzianka:
Np dla rekodu w bazie z CDN.TwrPromocje:

Kod: Zaznacz cały

TPR_Id	TPR_PrmId	TPR_TwrTyp	TPR_TwrFirma	TPR_TwrNumer	TPR_TwrLp	TPR_TwgTyp	TPR_TwgFirma	TPR_TwgNumer	TPR_TwgLp	TPR_Typ	TPR_Wartosc	TPR_Prog	TPR_Waluta	TPR_FlagaNB	TPR_Notatki	TPR_ZstID	TPR_LP	TPR_RodzajCeny	TPR_Wymagany	TPR_LimitTyp	TPR_LimitWartosc
8	8	16	1172993	17	0	0	0	0	0	3	1.9912	0.0000	PLN	N 0	1	0	0	0	0.0000
Odczytane z listy wartości to:
TYP - 8248 | FIRMA- 538976288 | NUMER- 538976288 | LP- 8224

Skąd te liczby?

JarekZ
Posty: 135
Rejestracja: 02 paź 2014, 14:11
Rola: Administrator CDN XL
Lokalizacja: Bielsko Biała
Kontakt:

Re: HYDRA - zaznaczone pozycje

Post autor: JarekZ »

to samo jest chyba na paczkach przy wysyłce
Odpowiedź z asysty comarch - no ta lista nie jest jeszcze obsługiwana poprawnie przez standardowe mechanizmy zaznaczania dające możliwość odczytu w hydrze :(
czyli standard :( :(
musiałem zrobić w hydrze okno z paczkami i tam obsłużyć zaznaczanie, no ale cóż, duży może więcej.

laplace
Posty: 43
Rejestracja: 20 paź 2010, 09:23
Rola: Inny

Re: HYDRA - zaznaczone pozycje

Post autor: laplace »

Dzięki za info - przynajmniej nie jestem sam z tematem :-)

apacz
Posty: 3
Rejestracja: 27 gru 2018, 21:59
Rola: Konsultant CDN XL

Re: HYDRA - zaznaczone pozycje

Post autor: apacz »

Rozwiązanie poniżej:

DataTable dtchecked = new DataTable();
dtchecked.Clear();
dtchecked.Columns.Add("TYP");
dtchecked.Columns.Add("FIRMA");
dtchecked.Columns.Add("NUMER");
DataRow dtrow;

try
{

ADODB._Recordset recordset = Runtime.WindowController.GetQueueMarked((int)ProcedureId, GetWindow().AllChildren["?TabTra"].AllChildren["?lWysylki"].Id, GetCallbackThread());

int count = recordset.RecordCount;

//MessageBox.Show("LIST POS: " + count.ToString());

if (count == 0) return true;

recordset.MoveFirst();

while (recordset.EOF == false)
{
dtrow = dtchecked.NewRow();

ADODB.Fields fields = recordset.Fields;
for (int i = 0; i < fields.Count; i++)
{
string sName = fields.Name;
string sValue = fields.Value.ToString();
//Runtime.WindowController.UnlockThread();
//MessageBox.Show("LIST POS: " + sName + " " + sValue);
//Runtime.WindowController.LockThread();

if (sName == "TYP") dtrow["TYP"] = sValue;
if (sName == "FIRMA") dtrow["FIRMA"] = sValue;
if (sName == "NUMER") dtrow["NUMER"] = sValue;
}
dtchecked.Rows.Add(dtrow);

recordset.MoveNext();
}

}
catch (Exception ex)
{
//Runtime.WindowController.UnlockThread();
System.Windows.Forms.MessageBox.Show("Nie wybrano pozycji " + "\r\n\n" + ex.Message);
Runtime.WindowController.LockThread();

return true;
}

ODPOWIEDZ