voidaksesi lisätä alueita suosikkeihisi
voidaksesi lisätä alueita suosikkeihisi
Harmillistahan tämä on, mutta jos vika olisi helposti löydettävissä niin olisihan se jo korjattu. Palkanlaskentaa meilläkin käytetään mutta ei ole tuollaista tullut koskaan vastaan. Olisiko mahdollista että palvelimen ja/tai työaseman päiväys/kieliasetuksissa on jokin asetus väärin? Tuleeko virhe joka palkanlaskennan operaatiossa vaiko vain satunnaisesti? Vai kenties jotain tiettyä raporttia tulostaessa? Miten tilanteesta toivutaan?
Sorkkiiko joku muu ohjelma teidän Nova-kantaa - ts. tuleeko palkanlaskentaan tietoja jostain muusta järjestelmästä? Näitä asioita varmaan on käsitelty kun kerran tietokantaakin ovat tutkineet ja joskus se on tuskallista. Meilläkin on ollut muutamia veemäisiä bugeja joita ei vain saatu toistettua millään kehityksessä ja kesti kauan että löytyi oikea yhdistelmä jossa bugi saatiin esille. Ettei kuitenkin kyse olisi jostain toimintatavasta jossa tehtään asioita niin kuin ne on aina tehty koska se on toiminut ja tuo operaatio hajosi versiossa 9.7. Itse tietokannassa palkka-taulussa on kyllä päivät ovat smalldatetime. Itsekin kun sql-skripteillä käsittelene niin usein on helpompaa käsitellä niitä merkkijonoina. Näetkö missään virheessä itse tietokannan kenttää josta virhe tulee? Jos sinulla on pääsy sql-kantoihin niin voisimme tehdä vertailevia kyselyitä josko löytyisi joku. Kyse voi hyvinkin olla esim. yhden työntekijän tietoihin liittyvästä asiasta tai jostain muusta jota ei nyt vain osata ajatella.
Meidän nykyinen tuotantopalvelin (Sqlserver 2017) ja entinen (Sqlserver 2008R2) tarjoavat principaleiksi us_englishia. Tietokantojen collation-asetukset on toki määritelty ohjeiden mukaan Finnish_Swedis_blaablaaksi . Mutta minä en tiedä näistä tietokantamoottorien konepellin alaisista jutuista tarpeeksi sanoakseni juuta tai jaata että voisiko tuo jopa vaikuttaa. Toivottavasti tämä ketju on kehittäjienkin seurannassa.
Ohjelmoinnissa on monta tapaa tehdä asioita ja sanoisin että tyypinmuunnos on erinomainen työkalu monissakin tapauksissa - se toimii testinä mitä kenttä sisältää. Itsekin käytän sitä eräissä raporttipohjissa jossa saan tutkittua onko neljä merkkiä alusta vuosiluku vaiko ei.
Tässä tapauksessa tuo virheilmoitus ei mielestäni ole osoitus siitä että tyypinmuunnos itsessään on väärin vaan seuraus jostain syystä, jonka toki pitäisi osata antaa järkevämpi virheilmoitus.
Ymmärrän kyllä mitä sanot, mutta tuo koska samainen ohjelma toimii mitä ilmeisimmin valtaosalla muista käyttäjistä/asiakkaista/ympäristöistä ihan oikein niin tämä (kenties pohjimmiltaan jo hyvinkin vanhaa perua oleva) ohjelmointitekninen epäeleganssius (kenties jopa purkka) ei ole se vian juurisyy. Miten tiketti suljettiin viimeksi - saivatko toistettu asian teidän kannallta Visman ympäristössä?
Tämä on selvä tapaus että parempi menetelmä päivämäärien käsittelyyn olisi olemassa. Mutta eihän tuo aiheuta ongelmia ellei jossain muussa kohdassa tietokantaan tallennu Novan kannalta vääräntyyppistä dataa ja vika on silloin jossain muussa kuin tuossa tyypinmuunnoksessa itsessään. Onko teidän tietokannassa siis päivämääriä väärässä formaatissa - jolloin tuo tyypinmuunnospäivitys auttaisi - vai onko siellä arvoja jotka aiheuttaisivat joka tapauksessa virheitä? Jos ensimmäinen vaihtoehto, niin avainkysymys on että miksi päivämäärät muodostuvat väärässä formaatissa?
Meidän tietokannasta ei löydy päivämääriä muissa formaateissa kuin tuossa jota Novakin nieleskelee ja jos on tällä hetkellä niin ettei Nova muuta nieleskele niin sen kanssa on elettävä.
Hävettävistä ajatuskatkoksista huolimatta (tietokannassa tietysti smalldatetime kentässä tieto on päivämääränä jos yleensä on) itse ydinasia pätee: Joka tapauksessa päiväys tarjoillaan nyt Novalle väärässä muodossa ja vaikka se on toki korjattavissa myös Novan ohjelmoinnin muutoksella oikeaoppisempaan muotoon, niin palvelinpään asetuksissahan se vika täytyy majailla ja helpompi muutos tässä vaiheessa on saada palvelimeen. Mietin että jos teen testikannan ja muutan siihen default principaliksi suomen ja kokeilen tehdä samoja operaatioita. Voihan pam pam pam pam Pamela.... (Victoria Principal) ku ihania tällaiset.
Collation-asetukset ovat samat mutta tosiaan meillä on molemmissa sqlserver-palvelimissa myös Nova-kannoissa default_language_name-kentän arvona: us_english.
En osaa sanoa onko tuo merkittävä ero tai olenko minä tai joku muu tehnyt jotain aikoinaan väärin.
Summa summarum. Eikös tämä nyt tarkoita sitä että ongelmaan löytyi sekä syy että nopea ratkaisu. Onko ratkaisu lopullinen vai tarttuuko Visma koodinsiivoustalkoisiin on sitten muiden käsissä. Novan asennusoppaissa ei ole mainintaa noista "default collation" -asetuksista. Olisiko mahdollista että siihen maailman aikaan kun Nova siirtyi sqlserveriin (eli vuosituhannen alussa sqlserverin versiossa 2000 /ja Novan versiossa 6 ) oli "default collation" us_english ja siksi Novakin rakentuu sen varaan? En tiedä. Tosin nuo toiminnot jotka nyt aiheuttavat ongelmia ovat varmasti tuoreempia.
Olin pilotoimassa Nova 10:ä - ja katsoin juuri virtuaalipalvelimelta johon asensin testiä varten puhtaalta pöydältä ohjeiden mukaan Sqlserverin 2014 Developer Express -version ja sielläkin on palvelimen oletuskielenä englanti ja "vain" server collation asetuksena Finnish_Swedish_CI_AS. Eli oletustilanteessa ja ohjeiden mukaisessa asennuksessa Nova toimii halutulla tavalla. Jos asiat on tehty ohjeiden vastaisesti niin korjaava toimenpide ei ole kiertotie vaan korjaus. Päivämäärien käsittely toimii tilanteissa joissa järjestelmää on käytetty oikein - ja vaikka huomiosi päivämäärien käsittelystä onkin sinänsä täysin oikea niin em. seikat tekevät asiasta lähinnä kehitysehdotuksen eikä vian. Koko tietokantamoottorin asetuksien muuttaminen voi aiheuttaa muitakin seurauksia ziljoonassa paikkaa joten en ihmettele ettei siihen kevyesti lähdetä. Novan koodiriveissä kun voi olla hyvinkin vanhoja vuosikerrostumia...
Visma Amplio Oy
PL 20
00047 VISMA
Copyright © 2019 Visma.com. All rights reserved.