vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Notiz-Kalender im Netzwerk Architektur 
Autor: argoped
Datum: 28.07.16 18:25

Hallo,
ich würde gerne eine Art Kalender programmieren, der von vielen Nutzern im Netzwerk verwendet werden kann. Dabei soll man Einträge für einzelne Tage anlegen, löschen und editieren können. Ich dachte mir für jeden Tag eine Datei anzulegen und die Einträge darin abzuspeichern damit nicht alle immer auf die gleiche Datei zugreifen. Über FileSystemWatcher im Oberverzeichnis würde ich dann den einzelnen Nutzern mitteilen, wann die Anzeige aktualisiert werden muss, da gerade irgendeiner eine Datei geändert hat.
Es darf natürlich nicht möglich sein, dass mehrere Nutzer gleichzeitig in eine Datei schreiben können da sonst der eine dem anderen seine Änderungen überschreiben könnte.
Wie würdet Ihr da vorgehen.


Ich hoffe ich habe mich klar genug ausgedrückt.

schon mal vielen Dank für Eure Mühe
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Notiz-Kalender im Netzwerk Architektur 
Autor: Franki
Datum: 31.07.16 01:55

Hallo,
für jeden Tag eine Datei ist für einen Kalender nicht sinnvoll, da solltest du eine Datenbank verwenden. Grade wenn es um mehrere User geht die Termine eintragen, und später verwalten können geht das mit reinen Textdateien nicht oder nur sehr umständlich.

Aber die Berechtigungen die du ansprichst greifen auch bei einer Datenbank. Da musst du auch die Kontrolle einbauen welcher Termin von wem wann eingetragen wird usw. Aber bei einer DB hast du mehr Möglichkeiten (Stichwort SQL) als bei reinen Textdateien.

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Notiz-Kalender im Netzwerk Architektur 
Autor: effeff
Datum: 31.07.16 14:35

Nimm anstelle einer Textdatei eine Datenbank, die auch von mehreren Nutzern gleichzeitig benutzt werden kann...

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Notiz-Kalender im Netzwerk Architektur 
Autor: argoped
Datum: 01.08.16 12:50

Vielen Dank für die Rückmeldungen. Eine Datenbank kommt eigentlich eher nicht in Frage, da die Nutzerrechner im Netzwerk mit sehr unterschiedlichen Windows Versionen (XP - 10) daherkommen. Zudem kenne ich mich mit DB's nur rudimentär aus. Hatte eher an eine kleine schnelle Lösung gedacht.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Notiz-Kalender im Netzwerk Architektur 
Autor: Franki
Datum: 02.08.16 03:08

Hallo,

die unterschiedlichen Windows Versionen sind kein Problem für eine Datenbank (für (Text)dateien aber auch nicht).

Beschreibe doch mal wie du dein Programm aufbauen möchtest. Jeder User/Rechner bekommt dein Programm installiert alle schreiben auf einem Server in die Dateien (oder Datenbank)

Du musst dir ja aufgrund deiner Anforderungen sowieso überlegen wie du es regeln möchtest, dass gleichzeitige Zugriffe, Berechtigungen, gegenseitiges Überschreiben von Terminen usw. nicht möglich sind.

Das ist so oder so nicht ganz trivial und muss euren Anforderungen entsprechend geplant und dann programmiert werden. Du brauchst in jedem Fall im Berechtigungssystem den Ersteller des Termins und die Berechtigungsverwaltung wer welche Termine editieren oder löschen kann.

Meeting mit Chef: Mi 14:00 Uhr von User A (Chef)
Angestellter B schläft noch und editiert den Termin auf 18:00 Uhr
Stellvertreter vom Chef will das rückgängig machen (braucht die Berechtigung) Weil Chef im Außendienst ist.
Angestellter C will um einen Tag verschieben weil er noch Urlaub hat.

usw. usw. bei einem Kalender der im Netzwerk verfügbar ist musst du solche Sachen berücksichtigen.

Und ganz unabhängig ob mit DB oder ohne, eine kleine und schnelle Lösung die auch funktioniert gibt es nicht.

Alternative wäre sich nach einer Onlineversion eines Kalenders umzusehen und diesen zu nutzen. Dann hätten deine User auch die Möglichkeit ausserhalb des Firmennetzwerks z.B. mit ihrem Smartphone auf den Kalender zugreifen zu können. Wenn ihr einen eigenen Webserver betreibt der zugänglich ist, könntest du das auch selbst mit ASP/ASP.NET/PHP programmieren. Für die Anwender wäre dann nur ein Browser nötig.

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Notiz-Kalender im Netzwerk Architektur 
Autor: argoped
Datum: 02.08.16 12:13

Ja Franki,
das trifft genau was mir so im Kopf rumgehen. Das man sich bei einer Datenbank selbst um solche Kollisionen kümmern muss überrascht mich. Ich hätte erwartet dass dafür gesorgt wird.
Aber wie auch immer ich werde mal ein bisschen rumprobieren und dann sehen wie groß der Aufwand ist.

vielen Dank mal an alle
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Notiz-Kalender im Netzwerk Architektur 
Autor: effeff
Datum: 02.08.16 12:55

Wie benutzt Ihr Euer Windows-Netzwerk denn? Wenn Ihr einen Exchange-Server habt, könnt Ihr doch auch die Terminfunktion von Outlook benutzen.

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Notiz-Kalender im Netzwerk Architektur 
Autor: Franki
Datum: 04.08.16 02:02

Hallo,
Zitat:


Dass man sich bei einer Datenbank selbst um solche Kollisionen kümmern muss
überrascht mich. Ich hätte erwartet dass dafür gesorgt wird.


Eine Datenbank ist erst mal nur dafür da Daten zu Speichern wie der Name ja schon sagt. Woher soll die denn wissen welche Anforderungen du an sie stellst?

Ein Parkbank hier im Kurpark ist dafür da, dass sich Personen darauf setzen können und die schöne Aussicht geniessen können. Aber die Parkbank kann nichts beinflussen welche Personen sich wann wie und warum darauf setzten.

Zitat:


Aber wie auch immer ich werde mal ein bisschen rumprobieren
und dann sehen wie groß der Aufwand ist.


Wie gesagt, schreibe doch mal was du genau möchtest, denn egal ob Datei oder Datenbank, die komplizierten Entscheidungen musst so oder so du treffen. Dafür gilt es das einfachste Werkzeug zu finden entsprechend deinen Anforderungen. Das kann im Extermfall sogar etwas ganz anderes sein.

Rumprobieren ist schön und gut, nur solltest du für dich zuerst mal eine Entscheidung treffen in welche Richtung du gehen möchtest.

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Notiz-Kalender im Netzwerk Architektur 
Autor: DotNetErbse
Datum: 04.08.16 10:10

Der Vergleich mit der Parkbank ist richtig gut!

Mit freundlichen Gr??en
DotNetErbse


[Es hei?t Paket und nicht Packet, auch wenn Standard augenscheinlich von Standar(t)e kommt,hei?t es dennoch Standar(d)]

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Notiz-Kalender im Netzwerk Architektur 
Autor: argoped
Datum: 04.08.16 18:00

Hallo und Danke noch mal an alle,
ich glaube ich habe nun ein überschaubares Konzept, ohne Park- ääh Datenbank. Dafür aber eher was mit Telefonzelle. Da kann immer nur einer telefonieren und die anderen müssen warten bis sie drankommen.

Ich weiß ja nicht ob das für einen interessant sein könnte deshalb hier nur eine Skizze:

Ein Programm das auf allen PC's ab Net Framework 2.0, ohne Installation, läuft.
Die EXE liegt auf einem Netz-Laufwerk und wird von allen Nutzern dort gestartet.
Dort liegen auch die ganzen Daten. D.h für jeden Tag im Jahr eine Datei z.B. mit Namen .\Data\dd_mm_jjjj.txt oder jedes Jahr könnte auch noch ein eigenes Verzeichnis bekommen dann würde der Name zu .\jjjj\dd_mm.txt.
Die Nutzer wählen einen Zeitbereich in einem System.Windows.Forms.MonthCalendar aus und nur die Dateien im gewählten Bereich werden eingelesen und angezeigt.
Ändert sich eine der angezeigten Dateien so muss die Anzeige 'refresht' werden. Das wollte ich über IO.FileSystemWatcher über das Datenverzeichnis machen. Wird eine Datei von jemand verändert so refreshen alle Nutzer (exakt gleichzeitig?) Ihre Anzeige.

Das verändern einer Datei hab ich mir so gedacht:
 
        '-----------------------------
	'editieren einer Datei mit Timeout
        FileIOStart = My.Computer.Clock.TickCount
        Do
            Try 
                'diese Zeile stürzt ab wenn die Datei gerade zum Schreiben von 
                ' jemand anders geöffnet ist
		Dim StrW As New StreamWriter(sFilePath)
                'hier ist die Datei geöffnet und für andere zum schreiben 
                ' blockiert
			'lese nun den Inhalt der Datei ein 
			FileContent = GetFileContent(sFilePath)
			'... nun kann FileContent verändert werden ...
			'...  das muss sehr schnell gehen ...
			'...  damit die anderen nicht zu lange warten müssen
		Dim XmlSdoc As New XmlSerializer(FileContent.GetType)
                XmlSdoc.Serialize(StrW, FileContent)
                StrW.Close()
                Exit Do
            Catch ex As Exception
                If My.Computer.Clock.TickCount > FileIOStart + _
                  FileOperationTimout Then
                    MsgBox("Die Datei " & sFilePath & " konnte nicht geöffnet" & _
                    "werden." & vbCrLf & ex.Message, MsgBoxStyle.Critical)
                    Exit Do
                End If
            End Try
        Loop
Es wird so lange versucht die Datei zum schreiben zu öffnen bis es entweder geklappt hat oder der Timeout überschritten ist. Wenn die Datei zum Schreiben geöffnet werden konnte bedeutet das, dass kein anderer gerade schreibt. Nun kann der aktuellste Dateiinhalt gelesen, verändert und geschrieben werden.
Ich denke so kann es nie passieren, dass FileContent nicht aktuell ist und irgendwas verloren geht.
Wenn da nun keiner einen ganz groben Denkfehler entdeckt werde ich das so machen.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel