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

HMP procedury z okna blokowanie rekordu
https://forum.mix-soft.pl/viewtopic.php?f=15&t=7278
Strona 1 z 1

Autor:  Khavert [ 2016-05-30, 10:08 ]
Tytuł:  HMP procedury z okna blokowanie rekordu

Witam,
mam pewien problem podczas wykonywania procedury w momencie wyświetlenia okna blokuje dostęp do bazy tj. w tym momencie inny użytkownik który chce wystawić dokument otrzymuje komunikat "Czekaj na dostęp do danych" w pasu na dole.

Czy można zrobić tak aby nie blokował rekordu w momencie wyświetlenia formularza?
Nie bardzo kojarzę które polecenie blokuje rekord czy też samo wywołanie procedury stosuje blokadę.
Ewentualnie próbowałem to samo zrobić w OnBeforeInsert ale nie przenosi mi pola "zapas"

Próbowałem
Cytuj:
OnAfterInsert = SprawdźOkresNumeracja
wstawiać na początku procedury
Poniżej kod
Kod:
int Sub OnAfterInsert(long lId)
   
string Baza = "Driver={SQL Server};Server=******;Database=*****;Uid=*****;Pwd=*****;"
dispatch con = "ADODB.Connection"
con.ConnectionString = Baza
con.open
dispatch rs = "ADODB.Recordset"
string sql
sql = "SELECT nazwisko From Magazynier where aktywny = 1 ORDER BY nazwisko ASC"
//wybieranie magazynierów
rs.open(sql,con,3)
rs.moveFirst
string nazwiska
string lista(1)
int dl1 = 1
//wpisywanie magazynierów do tablicy
While !rs.eof
   dl1 = grow lista,1
   lista(dl1) = rs.Fields("nazwisko").value
rs.movenext
wend    

con.close
//wybieranie rekordu z MG
   mg.GetRecById(lId)
   //subtypi = 78 i typi = 201
   string opis
   int ok
   if mg.GetField("subtypi") == 76 || mg.GetField("subtypi") == 78 then
//Wyświetl formularz
      form "Kto pakował?", 100,75
      cmbbox "Pakowacz", lista, opis, 0,0,125,200
      button "&Ok", 12,20,100,25,2
      ok = execform   
   endif
//zapisz do bazy
if ok == 2 then
         mg.SetField("zapas",UCASE(opis))
         mg.PutRec()
      endif
OnAfterInsert = SprawdzOkresNumeracji(lId, BAS_MG)
EndSub

Autor:  rafal [ 2016-05-30, 11:39 ]
Tytuł:  Re: HMP procedury z okna blokowanie rekordu

Będzie blokował.

Jednym z rozwiązań jest uruchomienie Twojego formularza z innego raportu.

Kod:
int Sub OnAfterInsert(long lId)
      Run("Formularz - include",(using "%l",lId))
endsub


Wtedy OnAfterInsert powinien polecieć dalej.

Autor:  Khavert [ 2016-06-02, 11:50 ]
Tytuł:  Re: HMP procedury z okna blokowanie rekordu

Witam,

Powyższe rozwiązanie w miarę działa tj. zdarzają się przypadki blokujące dany rekord, ale jest wystarczające.

Dzięki za podpowiedź

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