Ustawianie pola obliczając inne pole

Użytkowanie programu bazodanowego
socek
Posty: 2
Rejestracja: sob lut 06, 2010 4:23 pm

Ustawianie pola obliczając inne pole

Post autor: socek »

Moja tabela w bazie (dla uproszczenia) wygląda tak:
- ID (INT)
- Cena (INT)
- Ilosc (INT)
- Suma (INT)
W formularzu mam możliwość edytowania wszystkich pól, ale chciałbym, aby pole "Suma" mi się automatycznie generowało z pół Ilosc*Cena. Da się tak zrobić?
OpenOffice 3.1 na Gentoo Linux
mg2
Posty: 170
Rejestracja: czw sty 28, 2010 9:20 pm

Re: Ustawianie pola obliczając inne pole

Post autor: mg2 »

Da się zrobić poprzez kwerendę:
SELECT "id" AS "id", "nazwa" AS "nazwa", "ilosc" AS "ilosc", "cena" AS "cena", "ilosc" * "cena" AS "wartosc" FROM "towar"
Nie trzeba wpisywać ręcznie można wyklikać przez kreatora a na końcu dodać pole "ilość" * "cena".
W formularzu zmieniasz ustawienia pola "wartość" na "wymagana wartość: NIE", "możliwość edycji: NIE"
(+ zał.)

PS
Napisałeś "suma" ja to nazwałem z rozpędu "wartość" (ilość * cena).
Plik *.odb spakowałem zipem bo forum ma blokadę ładowania załączników bazodanowych.
Załączniki
wartosc.odb.zip
(8.71 KiB) Pobrany 359 razy
OOo3.1.1 na Ubuntu 9.04
Jan_J
Posty: 4576
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Ustawianie pola obliczając inne pole

Post autor: Jan_J »

forum ma blokadę ładowania załączników bazodanowych
Przez niedopatrzenie. Odblokowałem
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
kris_IV
Posty: 5
Rejestracja: pt lut 12, 2010 12:08 pm

Re: Ustawianie pola obliczając inne pole

Post autor: kris_IV »

Z tego co pamiętam to rozwiązywanie tego typu problemów przez kwerendy miało wiele niedoskonałości... Można to zrobić jakoś inaczej?
OpenOffice.org 3.1, Windows Vista/XP
mg2
Posty: 170
Rejestracja: czw sty 28, 2010 9:20 pm

Re: Ustawianie pola obliczając inne pole

Post autor: mg2 »

"Inaczej" tzn. inaczej wewnątrz silnika bazy czy "inaczej" poza silnikiem?

Można wykonać działanie z poziomu makra:
- pobierz wartości z danego rekordu bazy
- przypisz je do zmiennych BASICa
- wykonaj działanie
- wynik przypisz do danego rekordu bazy

Tylko co wtedy z uaktualnianiem danych?

Wewnątrz silnika można próbować jeszcze poprzez tabelę wirtualną (nie sprawdzałem):

Kod: Zaznacz cały

 SELEC VIEW "tab_wirt" as SELECT "pole" FROM "tabela" 
Wydaje mi się, że przez kwerendę jest najprościej i najbardziej naturalnie.
OOo3.1.1 na Ubuntu 9.04
ODPOWIEDZ