mojaSymfonia FORUM https://forum.mix-soft.pl/ |
|
Wyciąganie danych z bazy - ambasic https://forum.mix-soft.pl/viewtopic.php?f=15&t=910 |
Strona 1 z 1 |
Autor: | artur17 [ 2009-06-10, 09:01 ] |
Tytuł: | Wyciąganie danych z bazy - ambasic |
Witam, Próbuję wyciągnąć "id" dla rekordu z tabeli NT na podstawie pola "opis" i coś nie wychodzi... Chodzi mi o taki efekt, który byłby odpowiednikiem zapytania SQL: SELECT id FROM NT WHERE opis="zmienna opis" Natomiast w AmBasicu mam z wyciąganiem danych z bazy wciąż problem... :( Kod: 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 |
Autor: | rafal [ 2009-06-10, 09:12 ] |
Tytuł: | |
Chcesz znaleść rekord w bazie NT, który ma w polu "opis" pewną wartość a następnie sprawdzić jakie ID ma ten rekord? W przykładzie użyłeś klucza "ID". W tym kluczu nie ma pola "opis". Żeby zrealizować Twoje zadanie należy "przelecieć" całą bazę w poszukiwaniu wartości w polu opis. Kod: limit 8000 baseNT nt nt.SetKey("id") nt.SetKeySeg("id",0) int err = nt.getrec(FS) while err == 0 if nt.getfield("opis") == szykana_wartosc then print using "Id znalezionego rekordu %l"+lf,nt.getfield("id") err = nt.getrec(NX) wend nie jest to zbyt wydajne rozwiązanie ale w tej chwili nie widzę innego. napisz po co to robisz to może wymyślimy jakis inny sposób. |
Autor: | artur17 [ 2009-06-10, 09:50 ] |
Tytuł: | |
Dziękuję za szybką odpowiedź. 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łaśnie w to pole muszę wpisać "id" z tabeli NT. Wartość "id" planuję wyszukać po opisie... |
Autor: | rafal [ 2009-06-10, 09:53 ] |
Tytuł: | |
artur17 pisze: W tabeli TW występuje pole "idlongname". Właśnie w to pole muszę wpisać "id" z tabeli NT. Wartość "id" planuję wyszukać po opisie... Jak to wpisać? czy to znaczy, że dodajesz nowe towary z poziomu AMBasica? |
Autor: | artur17 [ 2009-06-10, 10:16 ] |
Tytuł: | |
Tak, wstawiam rekordy z towarem z poziomu ambasica. |
Autor: | rafal [ 2009-06-10, 10:31 ] |
Tytuł: | |
no to zmienia postać rzeczy 1. Wstawiasz towar Kod: baseTw tw [...] tw.SetField("kod","nowy towar") tw.SetField("nazwa","nazwa nowego towaru") [...] tw.DoInsert() 2. Wstawiasz długą nazwę do bazy NT Kod: baseNT nt [...] nt.SetField("super", tw.GetField("id")) nt.DoInsert() 3. Aktualizujesz rekord towaru Kod: tw.SetField("idlongname",nt.GetField("id")) tw.DoUpdate() |
Autor: | artur17 [ 2009-06-18, 08:47 ] |
Tytuł: | |
Mam jeszcze jedno pytanie. W związku z tym, że podane przykłady dostępu i operacji na rekordach różnią się w składni od standardowego Helpa Ambasica w Symfonii, to chciałbym zapytać w jaki sposób można zamknąć plik bazy po wykonani operacji na rekordzie. Standardowo jest to polecenie "Close nrBazy" Jednak taka konstrukcja polecenia nie działa przy zastosowaniu powyższych przykładów. Podobny problem mam z obsługą błędów przy tych operacjach. |
Autor: | wrob [ 2009-06-18, 10:03 ] |
Tytuł: | |
A poogladaj standartowe raporty w handlu - czesc z nich uzywa dokladnie takich metod jak opisane na forum - tam tez znajdziesz pozostale polecenia |
Strona 1 z 1 | Strefa czasowa UTC+1godz. [letni] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |