Ustawianie pola obliczając inne pole

Użytkowanie programu bazodanowego

Ustawianie pola obliczając inne pole

Postprzez socek » So lut 06, 2010 4:26 pm

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
socek
 
Posty: 2
Dołączył(a): So lut 06, 2010 4:23 pm

Re: Ustawianie pola obliczając inne pole

Postprzez mg2 » N lut 07, 2010 4:17 am

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) Pobrane 211 razy
OOo3.1.1 na Ubuntu 9.04
mg2
 
Posty: 170
Dołączył(a): Cz sty 28, 2010 9:20 pm

Re: Ustawianie pola obliczając inne pole

Postprzez Jan_J » N lut 07, 2010 7:07 pm

forum ma blokadę ładowania załączników bazodanowych

Przez niedopatrzenie. Odblokowałem
JJ
LO Still (6.2) ∙ AOO 4.1.7 ∙ Python (3.7|2.7) ∙ Unicode 12 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 3973
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Ustawianie pola obliczając inne pole

Postprzez kris_IV » Pt lut 12, 2010 2:43 pm

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
kris_IV
 
Posty: 5
Dołączył(a): Pt lut 12, 2010 12:08 pm

Re: Ustawianie pola obliczając inne pole

Postprzez mg2 » N lut 14, 2010 4:15 pm

"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   Rozszerz widokZwiń widok
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
mg2
 
Posty: 170
Dołączył(a): Cz sty 28, 2010 9:20 pm


Powrót do Base

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość