C# Feiertage in infopath

alb18ken

Cadet 3rd Year
Registriert
Dez. 2008
Beiträge
52
hab ne richtige fette frage :D

muss was programmieren hab aber keine ahnung wie das geht ;)
brauche daher hilfe

bin schon einieges weiter als ich dachte alles geht auch bis auf eine kleine sache.
ich will das mir infopath die feiertage von den Arbeitstagen abzieht.
gibt es in Visual basic nen befehl oder ausdruck wo er bei bestimmten tagen einen arbeitstag abzieht, bevor er das ergebnis mir zeigt.

heißt am 1.11.2010 soll basic - 1 rechnen da allerheiligen.

thx im vorraus ^^
 
Hi,
VB-Syntax:
Dim xDate As New DateTime(2010, 12, 1) 'Datum festlegen
Dim yDate As DateTime = xDate.AddDays(-1) 'einen Tag vom Orig.Datum abziehen und neuem Wert zuweisen.
In C# ist das äquivalent, nur andere Syntax.

So long,

Gretzki
 
Sorry glaube das VB :P
siehste da fängt schon die ahnungslosigkeit an :D
Ergänzung ()

soo habs versucht mit der einen lösung jedoch kaum ahnung wie was wo :D .

das sieht jetzt alls bei mir so aus:


Public Sub CTRL73_5_Clicked(ByVal sender As Object, ByVal e As ClickedEventArgs)

Dim node_von As XPathNavigator = _
MainDataSource.CreateNavigator().SelectSingleNode("/my:meineFelder/my:Datumsdifferenz/my:datum_von", NamespaceManager)
Dim node_bis As XPathNavigator = MainDataSource.CreateNavigator().SelectSingleNode("/my:meineFelder/my:Datumsdifferenz/my:datum_bis", NamespaceManager)
Dim node_diff As XPathNavigator = MainDataSource.CreateNavigator().SelectSingleNode("/my:meineFelder/my:Datumsdifferenz/my:differenz_tage", NamespaceManager)


If node_von.Value <> "" And node_bis.Value <> "" Then
Try

Dim d_von, d_bis As Date
d_von = Convert.ToDateTime(node_von.Value)
d_bis = Convert.ToDateTime(node_bis.Value)
Dim nDays As Long



nDays = DateDiff(DateInterval.Day, d_von, d_bis) + 1


Dim differenz_tage As String
differenz_tage = IIf(nDays \ 7 > 0, _
nDays - (nDays \ 7) * 2, nDays) - _
IIf(Weekday(d_von, vbMonday) - 1 + nDays Mod 7 < 6, 0, _
IIf(Weekday(d_von, vbMonday) - 1 + nDays Mod 7 = 6, 1, 2))




node_diff.SetValue(differenz_tage)

If node_diff.MoveToAttribute("nil", " http://www.w3.org/2001/XMLSchema-instance") Then
node_diff.DeleteSelf()
End If

Catch ex As Exception
'keine Aktion, Berechnung abbrechen
End Try
End If

End Sub
End Class
End Namespace


wo genau muss das alles jetzt rein wenn ich die feiertage da wieder abziehen will :(

nen beispiel wäre nicht schlecht.

sorry für diese fragen :(

thx aber trotzdem
 
If node_von.Value <> "" And node_bis.Value <> "" Then <-- hier abfragen .Value.length
Try

Dim d_von, d_bis As Date
d_von = Convert.ToDateTime(node_von.Value)
d_bis = Convert.ToDateTime(node_bis.Value)
Dim nDays As Long



nDays = DateDiff(DateInterval.Day, d_von, d_bis) + 1 <-- Nee, bitte nicht! Mach mal so: nDays = d_bis.Subtract(d_von).Days + 1


Dim differenz_tage As String
differenz_tage = IIf(nDays \ 7 > 0, _
nDays - (nDays \ 7) * 2, nDays) - _
IIf(Weekday(d_von, vbMonday) - 1 + nDays Mod 7 < 6, 0, _
IIf(Weekday(d_von, vbMonday) - 1 + nDays Mod 7 = 6, 1, 2))

<-- Hier weiß ich ehrlicherweise nicht was Du bezwecken willst, erkläre mal bitte!


node_diff.SetValue(differenz_tage)

If node_diff.MoveToAttribute("nil", " http://www.w3.org/2001/XMLSchema-instance") Then
node_diff.DeleteSelf()
End If
 
Das mit .Value.length versteh ich nciht wie das einbauen :(

aber das andere

"Dim differenz_tage As String
differenz_tage = IIf(nDays \ 7 > 0, _
nDays - (nDays \ 7) * 2, nDays) - _
IIf(Weekday(d_von, vbMonday) - 1 + nDays Mod 7 < 6, 0, _
IIf(Weekday(d_von, vbMonday) - 1 + nDays Mod 7 = 6, 1, 2))"

das ist dazu da damit er mir die Samstage und Sonntage nicht mit einrechent, was acuh ganz gut funktioniert.

also offene fragen sind :
wie das value.length hier abfragen?? kannste das mal ganz aufschreiben.
und die feiertage abziehen :(

danke für die ganze hilfe

achja "nDays = d_bis.Subtract(d_von).Days + 1" funktioniert prima ^^ thx
 
Zuletzt bearbeitet:
soo passt alles sieht auch schöner aus mit dem vorschlag ;)

thx

Wochende ist auch schon drin funktioniert auch ebenfalls super.

Nur die feiertage machen mir probleme :(
von mir aus trag ich die alle per hand ein.

brauche nen syntax wo wo ich stumpf sagen kann : wenn 1.11.2010 ( feiertag) dann - 1tag
und das so weiter und so weiter bevor er mir die Arbeitstage ausspuckt.

glaube das mit dem xDate und yDate war schon gar nicht mal so schlecht nur weiß ncith wie ich das einbauen soll :(.
voll doof.

kann mir jemand genau zeigen wie ich das einbauen muss mit dem bespiel 1.11.2010 ??

thx im vorraus ^^
 
Zuletzt bearbeitet:
Zurück
Oben