Oracle Data Provider For .NET – What is Number?

Grrr… Oracle Data Provider for .NET just cost me time, (some) money and above all reputation.

My .NET application was using MS Oracle Data Provider which was OK. Many are not satisfied with it, but I had no particular problems… Until I hit BLOBs.

To be honest BLOBs are not often used in business application, so I didn’t have much knowledge on how to use it in c#. It is quite easy, but MS Oracle data provider is not fond of them.

So I was forced to use ORACLE Data provider for .NET… And – o my god – database is full of NUMBER fields so MS is using OracleType.Number, but Oracle for .NET does not know “numbers” so I was forced to change the source code from OracleType.Number to OracleDbType.Int32 or OracleDbType.Double (or something like that).

And there I made a typical programming error – typo – I one procedure I changed OracleType.Number to OracleDbType.Int32, but it was used as amount field (so double)… 🙁

And all “of the sudden” amounts were rounded to integers. Nobody noticed for 14 days… and then panic – everything is wrong – who is to blame – me – I admit (ashamed)…

BUT: Thanks Oracle, maybe guys from DB team can teach guys from .NET team what are “numbers” in DB terms…

Številčenje v SQL podatkovnih bazah

V razvoju prej ali slej naletimo na problem, ko moramo zapise številčiti. Vsakemu dokumentu pač moramo določiti edinstveno številko, ki pa mora biti ob tem še zaporedna.

Vse SQL podatkovne baze poznajo avtomatično številčenje primernega ključa – ko torej v tabelo dodamo nov zapis, slednji dobi naslednjo zaporedno številko. To imenujemo tehnično številčenje zapisov. Problem pa se pojavi, ko potrebujemo vsebinsko številko dokumenta.

Za lažje razumevanje problema, si predstavljajmo tipično podatkovno tabelo, v kateri imamo poslovne dokumente – predračune, račune, dobavnice… Vsi različni dokumenti so v isti tabeli, a vsak med njimi mora imeti lastno vsebinsko številko. Primer:

#  DOKUMENT     VSEB. ŠT.   OSTALI PODATKI

1  Predračun    PR-1/2013   ... itd ...
2  Predračun    PR-2/2013   ... itd ...
3  Račun        RA-1/2013   ... itd ...
4  Dobavnica    DO-1/2013   ... itd ...
5  Predračun    PR-3/2013   ... itd ...
6  Predračun    PR-4/2013   ... itd ...
7  Račun        RA-2/2013   ... itd ...
8  Dobavnica    DO-2/2013   ... itd ...
9  Dobavnica    DO-3/2013   ... itd ...

Kot je lepo vidno v tabeli ima vsak tip dokumenta lastno številčenje.

Kako določiti vsebinsko številko?

Opcij je seveda več a nekako jih lahko uredimo v tri sklope:

  1. Sekvence – če jih podatkovna baza podpira.
  2. Lastna tabela za vsak tip številčenja – za vsak tip dokumenta narediti lastno tabelo, ki določi naslednjo številko
  3. Ena tabela za vso številčenje – za vse številčenje uporabiti eno samo tabelo

Sekvence

Dobro

  • Rešitev namenjena temu konkretnemu problemu

Slabo

  • Ne poznajo jo vse podatkovne baze

Lastna tabela za vsako številčenje

Dobro

  • Deluje v vseh SQL bazah
  • Zelo podobna rešitev kot sekvence

Slabo

  • Veliko malih tabel
  • Vse tabele je potrebno ustvariti vnaprej ali pa v programu vedno preverjati ali tabela obstaja ali ne.

Za vso številčenje uporabiti eno samo tabelo

Dobro

  • Deluje v vseh SQL bazah
  • Preprosta rešitev
  • Ni veliko dodatnega dela

Slabo

  • Ni primerna za SQL baze z veliko hkratnimi uporabniki

V naslednjih prispevkih bom podrobneje predstavil vsako izmed možnosti…

Katere povezave uporablja moja datoteka?

Danes sem na forumu prejel zanimivo vprašanje, katerega rešitev je prav zanimiva. MS namreč spremlja (če mu to dovolite), kaj uporabniki počno in predvsem, česa ne počno. In če neke funkcije veliko uporabnikov ne uporablja jo preprosto skrijejo, da ne moti večine, ki je tako ali tako ne uporablja.

Ena izmed takšnih funkcij, ki je veliko uporabnikov ne uporablja, sam pa jo pri urejanju diplomskih nalog redno uporabljam, je pregled povezav dokumenta.

Kot verjetno veste, lahko Word-ov dokument vsebuje elemente, ki so povzeti iz drugih datoteke (recimo grafe, ki se nahajajo v Excelovi datoteki). Na ta način sta datoteki povezani in ko se graf spremeni v Excelu se sprememba takoj odrazi tudi v Wordu.

Vse lepo in prav, a danes ne bom govoril o tem. Z Word-om 2010 je MS namreč skril funkcijo, ki nam je omogočila pogledati katere povezave vsebuje naša datoteka

Kako priti do tega okna?

Kot rečeno je torej potrebno v Wordu 2010 in nadalnjih malce telovadbe, da pridemo do tega okna:

Najprej odpremo okno z možnostmi našega Word-a

V oknu z možnostmi se postavimo na Orodna vrstica za hitri dostop’. Na desni strani se pokažejo nove možnosti, kjer na vrhu izberemo ‘Vsi ukazi’ v ponujenm seznamu spodaj najdemo ukaz ‘Uredi povezave do datotek’ ter jih dodamo na hitro vrstico.

In tako imamo opcijo v naši hitri vrstici:

Univerzalni temeljni dohodek (UDT)

Zaradi drugih obveznosti mi je malce zmanjkalo časa za vzdrževanje bloga in zato sem razmišljal, da je čas za malce drugačno objavo.

Tako se danes ne bom posvetil računalniški tematiki, temveč socialni. Že nekaj časa se tudi v Sloveniji pogovarjamo o tki. univerzalnem temeljnem dohodeku (UTD). Ideja ni nova, a družba je že tako napredovala, da jo lahko tudi uresničimo.

Kaj je UDT?

Temeljni dohodek je dohodek, brezpogojno dodeljen vsem na individualni osnovi brez preverjanja premoženjskega stanja in brez delovne zahteve. Je oblika zagotovila minimalnega dohodka, ki se od obstoječih oblik v različnih evropskih državah razlikuje na tri pomembne načine:

  1. izplačuje se posameznikom in ne gospodinjstvom;
  2. izplačuje se ne glede na kakršenkoli dohodek iz drugih virov;
  3. izplačuje se brez zahteve po opravljanju kakršnegakoli dela ali pripravljenosti sprejeti ponujeno službo.

Prosim premislite, prebrskajte sami. To ni podpora lenuhom to je pot v boljši in pravičnejši svet.

Če se strinjate z mano (in seveda mnogimi drugimi) vas prosim, da idejo podprete s podpisom, ki bo omogočil vložitev pobude v kolesje EU.

Predstavitveni film (za SLO podnapise kliknite spodaj oznako CC (ob spodnjem desnem robu videa)): https://www.youtube.com/watch?v=zru79jcVTt4

Stran za podporo in podpis: http://basicincome2013.eu/ubi/sl/

Hvala!

Dodatek (31.10.2013 – dan varčevanja!)

Za vse, ki se še niste odločili

Nov zakon o spletnih piškotkih

S  15. junijem je stopil v veljavo spremenjeni Zakon o elektronskih komunikacijah (ZEKom-1), ki zaostruje pravila glede uporabe spletnih piškotkov.

Spletni piškotki so majhne datoteke, ki se shranijo na računalnik obiskovalca spletne strani. Skrbijo za boljšo uporabniško izkušnjo, spremljanje statistik, napredno spletno oglaševanje in še marsikaj.

Po novem zakonu smo upravljalci spletnih strani dolžni opozoriti obiskovalca o piškotkih, ki jih nalagamo na vašo napravo, s katero se povezujete na splet.

Spletišče Matjazev.NET sestavljajo štirje sklopi:

  • Osnovno spletišče Matjazev.NET, s splošnimi informacijami o podjetju, nasveti, zastonj in plačljivo programsko opremo, knjigami….
  • Blog, ki ga trenutno berete
  • Forum, kjer najdete brezplačno pomoč pri uporabi MS Pisarne
  • Spletišče MEXCEL.biz, kjer najdete brezplačne dodatke za vaš MS Excel.

Nekoč smo na omenjenih spletiščih uporabljali programsko opremo Google Analytics, ki nam je omogočila spremljati koliko obiskovalcev se ustavi na naših spletnih straneh ter tudi, kaj vas najbolj zanima.

Z uveljavitvijo tega zakona je omenjena storitev postala brezpredmetna, saj jo ima vsak obiskovalec možnost izključiti in tako postanejo njeni rezultati napačni oz. nenatančni in nimajo več smisla.

S tem razlogom na spletišču ne uporabljamo Google Analytics programske opreme in tudi nobene druge programske opreme s pomočjo katere bi vas kakorkoli spremljali.

Piškotki, ki jih na naših spletnih straneh uporabljamo

MExcel.BIZ

Na spletišču Mexcel.biz uporabljamo dva piškotka, ki sta za delovanje strani nujno potrebna, zato sta dovoljena tudi v novem zakonu o elektronskih komunikacijah:

  • PHPSESSID je piškotek, ki nam omogoča vzdrževanje seje in je standarden PHP piškotek
  • lang je piškotek, s katerim si zapomnimo vašo izbrano jezikovno različico in z njegovo pomočjo se na stran vedno vrnete v izbranem jeziku.

Ker sta oba piškotka dovoljena vas za posebno dovoljenje ne sprašujemo!

Matjazev.NET

  • PHPSESSID je piškotek, ki nam omogoča vzdrževanje seje in je standarden PHP piškotek
  • PREF je piškotek, ki vam omogoča iskanje po spletišču in uporablja google tehnologijo iskanja

Na spletišču pa imate tudi možnost branja in pisanja komentarjev, kar nam zagotavlja tehnologija Disqus, ki pa uporablja lastne piškotke in za uporabo slednjih vas posebej vprašamo.

Matjazev.NET/blog

Na spletišču pa imate možnost deljenja vsebine, kar nam zagotavlja tehnologija ShareThis, ki uporablja lastne piškotke in za uporabo slednjih vas posebej vprašamo.

MExcel.BIZ/forum

Spletišče teče na tehnologiji phpBB3, ki za delovanje potrebuje piškotke, saj brez njih ne more teči, zato vas za uporabo slednjih posebej ne vprašamo.


Skupno delo

Kot že ptički čivkajo je Microsoft v novi različici MS podprl skupinsko delo več uporabnikov na istem dokumentu. Osebno se mi to zdi uporabna možnost in dodatek novi pisarni ki pa ima en velik problem… Vsi ljudje še namreč nimate najnovejše MS pisarne… Pa tudi tako hitro je še ne bodo/boste imeli.

V vmesen času pa lahko podobno – seveda zelo okrnjeno – a vseeno zelo uporabno možnost skupinskega urejanja dokumenta izkusite povsem zastonj in povsem internetno – torej brez potrebe kakršne koli instalacije na lokalni računalnik- kar hkrati pomeni tudi uporabo z različnimi napravami in različnimi operacijskimi sistemi.

Programska oprema se imenuje MoPad in nastaja pod okriljem Mozzila fundacije, dosegljivo pa je na spletni strani https://etherpad.mozilla.org/.

Preizkusite ne bo vam žal…

Iskanje celic glede na obliko oz. lastnosti

Iskanje vrednosti v Excelovih tabelah je preprosto in ga takoj obvlada vsak uporabnik. Tako recimo vsi vemo, da lahko poiščemo vse celice, ki imajo vrednost 516 preprosto tako, da izberemo orodje za iskanje (bližnjica CTRL+F, Urejanje / Najdi (Excel pred 2007) oz Osnovno / Urejanje / Poišči in izberi (Excel 2007 in nadalnji)) ter vanj vpišemo vrednost 516 ter kliknemo ‘Nadaljuj iskanje’ ali pa ‘Najdi vse’


Iskanje posebnost

Kaj pa če želimo najti vse združene celice ali pa vse celice, katerih tekst je v rdeči barvi?

Tudi tukaj nam zna Excel priskočiti na pomoč, saj lahko v že omenjenem oknu, natančneje določimo kakšno obliko celice iščemo. Zgoraj desno imamo namreč na voljo gumb ‘Oblika’ s katero določimo obliko in Excel išče celice, ki imajo natanko določeno obliko.

Primer: iskanje združenih celic

Če želimo poiskati vse združene celice izberemo torej orodje za iskanje, iskalni pogoj pustimo prazen, saj nas vsebina ne zanima in izberemo gumb ‘Oblika’. Odpre se novo okno, v katerem določimo obliko celic, ki jih želimo najti. Ker nas zanimajo celice, ki so združene, se postavimo na zavihek ‘Poravnava’ ter označimo, da nas zanimajo združene celice

Ko vse potrdimo, nam Excel prikaže seznam združenih celic oz. nam pokaže posamezne združene celice:

Na enak način lahko recimo najdemo tudi vse celice, ki imajo rdečo barvo ali pa imajo rdečo barvo in so združene.

Če nas ob obliki zanima tudi vrednost pač v okno vnesemo tudi vrednost in tako najdemo vse celice, ki imajo npr. vrednost 516 in so obarvane rdeče.
Ne pozabite počistiti oblikovanja, ko iščete nekaj drugega!

Excel si namreč zapomni kakšno oblikovanje ste izbrali in ob naslednjem iskanju oblikovanje ohrani. Ko torej vi naslednji recimo vnesete iskalni pogoj ‘Ljubljana’ se lahko zgode, da bo Excel vstrajal da te besede ne najde, čeravno vi veste, da se v tabel zagotovo nahaja…

Problem je lahko v tem, da ste prej označili, da vas zanimajo celice z rdečo barvo in Ljubljane z rdečo barvo pa v tabeli recimo ni. Excel vam tudi kaže, kakšno obliko išče, zato bodite na to pozorni

Oblikovanje počistite v padajočem meniju

Zamenjaj/Najdi besedilo samo znotraj označenih celic

V Excelu akcija zamenjevanja znakov ni tako pogosta kot v Wordu a se navkljub vsemu včasih le zgodi, da želite v kakšni veliki tabeli zamenjati neko besedo z drugo besedo. Recimo, da želite besedo ‘rdeč’ zamenjati z besedo ‘moder’.

Akcija je skrajno preprosta, saj samo izberete orodje za zamenjevanje in zaukažete, naj Excel pač besedico ‘rdeč’ zamenja z ‘moder’. To je vse.

Kaj pa če želite zamenjati besedici samo znotraj nekega manjšega področja in ne znotraj celotne tabele? Recimo samo znotraj enega stolpca?

V tem primeru pa se pojavi dilema, saj nikjer v oknu za zamenjavo znakov ni opcije ‘zamenjaj znotraj označenega obsega’. Določite lahko, naj Excel zamenjuje besede samo znotraj lista ali pa znotraj delovnega zvezka. Kaj pa znotraj označenega območja?

In izkaže se, da te opcije ni, ker je to pač privzet Excelov način delovanja. Če torej najprej izberete neko območje in potem izberete orodje za zamenjavo (ali iskanje), bo Excel zamenjal znake (iskal znake) samo znotraj označenega območje, ne da bi mu vi to morali posebej zaukazati!

Dvojni pogled na dokument

Word nam omogoča, da isti dokument hkrati urejamo na dveh različnih mestih znotraj dokumenta. Tako lahko recimo hkrati urejamo uvod in zaključek ali pišemo vsebino in vidimo, kaj se dogaja s kazali.
Uporaba orodja je skrajno preprosta saj je vse, kar je potrebno storiti samo z miško klikniti na opcijo Razdeli, ki se nahaja na zavihku Ogled.

Word nas prestavi v dokument, kamor nariše vodoravno črto, s katero določimo, kje želimo prerezati pogled dokumenta. Ko se odločimo in z miško kliknemo, nam word prikaže isti dokument zgoraj in spodaj.


Med obema deloma se lahko preprosto sprehajamo in ju neodvisno urejamo. Hkrati pa nam Word omogoča tudi neodvisno nastavljanje velikosti pogleda in podobnih elementov…

Kako v Word hitro zapisati veliko besedila

Kadar oblikujete dokumente oz. predvsem kadar pripravljate predloge po katerih bo kdo drug urejal dokumente, potrebujete testno besedilo.

Dandanes je do testnega besedila priti dokaj preprosto. Odprete poljubno spletno stran in iz nje prekopirate besedilo v vaš dokument.

A gre še lažje, hitreje in z malce več kontrole. V Prano vrstico v Wordu vpišite =RAND() in pritisnite ENTER in …. Pojavilo se bo besedilo 🙂

Imate pa nad besedilo še malce več kontrole, saj lahko Wordu tudi poveste koliko odstavkov želite in koliko stavkov v vsakem odstavku želite. To zapišete kot parametra funkcije. Funkcija ‘=RAND(10, 4)’ bi izpisala 10 odstavkov s po štirimi stavki. 😉