none
Skrivning med SQL-Prepare

    Spørgsmål

  • Hej

    Jeg har et problem med skrivning i andet regnskab med SQL-prepare kommandoen i C5.
    Nedenstående script virker fint i alle SQL installation som er oprettet fra C5 2008/2010, men fejler på gamle installationer som er blevet opgraderet. På nye installationer sætter C5 automatisk en standardværdi på alle de felter som ikke sættes via scriptet - dette er ikke tilfældet med ældre SQL installationer (selvom de er blevet opgraderet til 2012).

    Jeg kan se at default SQL systemparametre er ændret med tiden, og selvom jeg kører seneste SQL-init xal-kørsel som retter manglende parametre og defaultværdier, ja så virker nedenstående lille test script stadig ikke. Den brokker sig over NULL værdier i alle felter som ikker er sat med SQL-prepare.

    Er der nogen som har en ide til denne fejl ?

    Fejlbesked fra C5 når script afvikles (hvis lastchanged udfyldes kommer næste felt i rækkefølgen med samme fejl):

    14. maj 2014 09:52

Alle besvarelser

  • Hej BoJaco

    Mit bedste bud at Default value på SQL-felterne af en eller anden grund ikke er udfyldt. Har du checket det manuelt på SQL-serveren?

    Er det -zj du mener? Prøv i givet fald også lige at køre en synkronisering af metadate fra udviklingsmenuen...

    PS:  Den der med at bruge en bilagsserie som RowNumber vil jeg gerne advare imod. De SKAL være unikke på tværs af tabellerne, så du skal bruge den StoredProcedure der er på SQL-serveren til det i stedet. Ellers kan du komme til at genbruge en værdi som C5 kernen allerede har udtaget til en anden post - eller omvendt...


    MVH gsl@systemconnect.dk Se også: http://blog.systemconnect.dk/

    14. maj 2014 10:34
  • Hej Gert

    Defaults er sat - har tjekket værdierne på SQL serveren.

    Den kørsel som jeg har kørt er den xal (sqlsrvr_c5.xal) som man plejer at oprette tabellerne med på SQL-serveren første gang.
    Denne kørsel har jeg blot importeret i C5 og kørt den igen - og den har fint nok sat default parameterne, men det har bare ikke hjulpet - tabellen XALSYS er identisk med en anden installation hvor det virker - er der mon noget andet som skal rettes ?? 

    Vedr. RowNumber - hvordan kalder man den StoredProcedure fra C5 ??
    Jeg har omgået det ved at lave en #MaxInt minus et par millioner - så bør det ikke kunne konflikte ;-)

    /Bo

    19. maj 2014 14:42
  • Har du prøvet at fyre nøjagtigt den samme SQL af direkte på SQL-serveren? Og det giver ikke fejlen?

    Jeg har ikke andre bud end at det er en default value der driller...

    Prøv dog lige at køre en fuld synkronisering: Udviklingsmenuen, DBD/Diverse/SQL, Generelt/Vedligeholdelse / Check/Synkroniser.

    Vælg Alle tabeller og svar Ja til alt. Dog bør du måske lige undlade at rette fejl indtil du har et overblik over hvad der rettes (så svar nej til den i første omgang).

    Bemærk at især kontrol af højrestillede data tager en del tid...

    Det kan da være det hjælper?

    Mht. udtagelse fa rownumber - så ca. sådan her (1-tallet i kaldet angiver at du ønsker at udtage 1 nummer. Angive du fx 3 udtages 3 numre. Det er altid første nummer der returneres, så du skal så selv tælle de næste op - men det kan spare nogle kald hvis du skal bruge mere end 1 løbenummer):

    ---
    INT &NextRow
    SET &NextRow = Str2Num(SQLSelect('EXEC sp_xal_seqno 1,"'+&DataFile+'"'))
    IF &SQLStat == 0 THEN
        PRINT "Next row: ",&NextRow
    ELSE
        PRINT "Error"
    ENDIF
    PAUSE
    ---


    MVH gsl@systemconnect.dk Se også: http://blog.systemconnect.dk/

    • Foreslået som svar af Gert Lynge 19. maj 2014 15:29
    19. maj 2014 15:28