konto usunięte

Temat: Pobranie id rekordu we wstawianym towarze.

Witam,
Jak można przy okazji wstawiania nowego rekordu pobrać jego nowe id, które otrzymał po Insercie?
Próbowałem m.in. w poniższy sposób, ale bez rezulatatu...

	int bdTW = Open KatalogFirmy() + "51tw.dat" for base "TW"
SetField (bdTW, "kod", kod)
SetField (bdTW, "nazwa", nazwa)
(...)
InsRec(bdTW)

Int seg = GetKeySeg (bdTW, "id")
SetKey (bdTW,"id")
SetKeySeg (bdTW,"id", seg)
GetRec (bdTW, EQ)
Int id_tow=GetField (bdTW, "id")
Close bdTW
Marek Pacan

Marek Pacan
http://symfoniadodat
ki.pl

Temat: Pobranie id rekordu we wstawianym towarze.

Artur S.:
Witam,
Jak można przy okazji wstawiania nowego rekordu pobrać jego nowe id, które otrzymał po Insercie?
Próbowałem m.in. w poniższy sposób, ale bez rezulatatu...

	int bdTW = Open KatalogFirmy() + "51tw.dat" for base "TW"
SetField (bdTW, "kod", kod)
SetField (bdTW, "nazwa", nazwa)
(...)
InsRec(bdTW)

Int seg = GetKeySeg (bdTW, "id")
SetKey (bdTW,"id")
SetKeySeg (bdTW,"id", seg)
GetRec (bdTW, EQ)
Int id_tow=GetField (bdTW, "id")
Close bdTW

nie sprawdzałem ale jeżeli po insercie 'bdTW' nie zawiera w polu 'id' wartości nowego identyfikatora to zawsze można pobrać nowy rekord 'po kodzie' - w końcu przed chwilą go wprowadziliśmy.
Tak chyba będzie najłatwiej.

konto usunięte

Temat: Pobranie id rekordu we wstawianym towarze.

Ok, liczyłem jednak, że da się to zrobić jakoś przy okazji wstawiania nowego rekordu.
Rozwiązanie to jednak nie sprawdzi się w dalszym moim postępowaniu.
Krótko opiszę o co mi chodzi:
Otóż moim celem jest ominięcie problemu bariery 40 znaków w Handlu Premium przy dodawaniu nowego towaru do bazy.
Dłuższe nazwy zapisywane są w polu "opis" tabeli NT.
W tabeli TW występuje pole "idlongname". W to pole muszę wprowadzić "id" z tabeli NT.
Wartość "id" wyszukuję po opisie...
Niestety poniższe rozwiązanie mi nie zadziała, ponieważ pole "opis" nie jest indeksowane.
int sub Wartosc_ID (string kod, string opis) 

bdNT = Open KatalogFirmy() + "51nt.dat" for base "NT"
SetKey (bdNT, "id")
SetKeySeg (bdNT, "opis", opis)
GetRec (bdNT, EQ)
string id1=GetField (bdNT, "id")
Close bdNT

endsub


Pozostaje więc pytanie, czy jestem zmuszony tworzyć niezbyt wydajne rozwiązania przeszukiwania rekordów w pętli...(???)

konto usunięte

Temat: Pobranie id rekordu we wstawianym towarze.

Udało mi sie rozwiązać problem (z pomocą jeszcze innego forum) w następujący, alternatywny sposób:

baseTw tw
tw.SetField ("kod", kod)
tw.SetField ("nazwa", nazwa)
(...)
nt.DoInsert()

baseNT nt
(...)
nt.SetField ("super", tw.GetField("id"))
nt.SetField ("opis", nazwa1)
nt.DoInsert()

tw.SetField("idlongname",nt.GetField("id"))
tw.DoUpdate()
Artur S. edytował(a) ten post dnia 18.06.09 o godzinie 13:36

Następna dyskusja:

Pobranie danych z bazy i pr...




Wyślij zaproszenie do