🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #14899

tijdsgegevens invoeren in een sqlserver db via stored procedure

#14899
From: Ronnie
Date: Fri, 29 Dec 2000 19:14
86 lines
3952 bytes
Hellow,

Ik heb het volgende probleem:  ik (her)schrijf momenteel een systeem om
uurschema's in op te slaan.  Deze gegevens worden gehaald uit een asp-pagina
met de volgende code:

dim datHours
datHours = request.form("inputHours")
Het veld inputHours heeft het formaat hh:mm (wordt gecontroleerd bij
verzending)

Vervolgens worden deze gegevens naar een component (die draait op de
Components Services van MS Windows 2000) gezonden, geschreven in visual
basic, waarin ze verder verwerkt zullen worden.
Oproep van de component :
objComponent.InsertTime(cint(numPersNr), cdate(datHours)) (ook het
personeelnummer wordt meegegeven)

In deze component werd vroeger gebruik gemaakt van het adodb.recordset
object met de volgende code:

Public Sub InsertTime(pnr as integer, dthrs as date)
dim rsinput as ADODB.RecordSet
set rsinput = new ADODB.RecordSet
with rsinput
    .activeconnection = cnConnection        'gedefinieerd en ge�nitaliseerd
in de Class_Initialize
    .source = "tblInput"
    .addnew
        .fields("PNr") = pnr
        .fields("Hrs") = dthrs
    .update
    .close
end with
set rsinput = nothing
End Sub

De tabel tblInput is als volgt gedefinieerd in de database in MS SQL Server
2000:
(PK) HoursID integer identity NOT NULL
(FK) PNr integer NOT NULL (personeelsnr)
Hrs datetime NOT NULL

Bij het gebruik van deze oude methode werd het veld Hrs netjes ingevuld met
de volgende gegevensopmaak: 'hh:mm:ss'

Nu is het de bedoeling dat alle database-activiteit moet uitgevoerd worden
via stored procedures (sp's) op de SQL Server.  De sp ziet er voor de insert
als volgt uit:

Define dbo.p_InsertHour
@Pnr integer,
@Hrs datetime
AS
Insert into tblHours (PNr, Hrs) values (@Pnr, @Hrs)

Deze wordt opgeroepen met de volgende code in de component:

Public Sub InsertTime(pnr as integer, dthrs as date)
    dim strSQL as string
    strSQL = "EXEC p_InsertHour " & pnr & ", '" & format(dthrs, "hh:mm:ss")
& "'"
    cnConnection.Execute strSQL, , adCmdText
End Sub

Dit geeft het verschil dat het datumveld als volgt wordt ingevoerd: 1/1/1900
hh:mm:ss

Dit heeft zware gevolgen voor de latere verwerking: bij het samentellen van
de ingevoerde uren wordt, naast de ingegeven uren, automatisch 48 uur
bijgeteld, zodat plotseling werkweken van bv 280 uren ontstaan...

Heeft er nu iemand enig idee hoe dit moet opgelost worden met inachtname van
hetvolgende :
- de sp moet gebruikt worden (is nu eenmaal de gevraagde 'way of
working') --> de oproep en/of de samenstelling van de sp moet veranderen
- commands zijn niet toegelaten
- de velden moeten ingevoerd worden met formaat hh:mm:ss

Als dit niet mogelijk is, laat het dan ook weten, zodat er wel een
workaround moet gemaakt worden (eventueel oude methode terug gebruiken)

Enorm veel dank,

Steven "Ronnie" Wuyts
http://ronnie.be.tf
Technical Details
Message-ID: <wo536.2860$MA1.126473@afrodite.telenet-ops.be>
Path: arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!supernews.com!216.227.56.88.MISMATCH!telocity-west!TELOCITY!fr.clara.net!heighliner.fr.clara.net!newsfeeds.belnet.be!news.belnet.be!afrodite.telenet-ops.be!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII
X-Google-Thread: fcea4,7a9e75580c72a9da,start
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2000-12-29 11:14:36 PST
Path: arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!supernews.com!216.227.56.88.MISMATCH!telocity-west!TELOCITY!fr.clara.net!heighliner.fr.clara.net!newsfeeds.belnet.be!news.belnet.be!afrodite.telenet-ops.be!not-for-mail
Reply-To: "Ronnie" <ronnie@flanders.to>
From: "Ronnie" <wuyts.steven@pandora.be>
Newsgroups: be.comp.programming
Subject: tijdsgegevens invoeren in een sqlserver db via stored procedure
Lines: 88
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 5.50.4133.2400
X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400
Message-ID: <wo536.2860$MA1.126473@afrodite.telenet-ops.be>
Date: Fri, 29 Dec 2000 19:14:36 GMT
NNTP-Posting-Host: 213.224.134.44
X-Complaints-To: abuse@pandora.be
X-Trace: afrodite.telenet-ops.be 978117276 213.224.134.44 (Fri, 29 Dec 2000 20:14:36 MET)
NNTP-Posting-Date: Fri, 29 Dec 2000 20:14:36 MET
Organization: Telenet Internet