Hi und danke für die PM 🙂
So ins Detail ging meine Anwendung damals leider nicht.
Spontan fällt mir nur ein, dass du zwischen PC und nicht PC mit WMI unterscheiden könntest.
Für den Rest (Netzwerkdrucker, Router, ...) würdest du meiner meinung nach über SNMP die Sachen abfragen müssen.
SNMP mit C#:
http://www.codeproject.com/useritems/SNMPDLL.asp
Grüßle,
Daniel
Hi,
du könntest das direkt in der SQL-Abfrage regeln, dass jweils die anzahl der personen, die gleiche Pflegestufe hat, abgerufen wird.
würde in deinem fall so aussehen:
SELECT PG, COUNT(*) FROM Patienten group by PG
Somit gibt die Abfrage zur jeweiligen Pflegestufe die Anzahl der zugeordneten Personen zurück.
Mfg,
Daniel
hi,
nur mal rein interessehalber, warum verwendest du nicht gleich TCP/IP?
Da müsstest dich nicht um die Sichere Übertragung kümmern?
Mfg,
Daniel
Hi,
unter c# kannst du auch SQLite verwenden, auch der Embedded Firebird ist recht gut zu gebrauchen.
Über die Suche solltest aber genügend zu diesem Thema finden 😉
mfg,
daniel
Hi,
wenn du das so zuweist wird ja nur immer der Wert bei i ans Label zugewiesen.
Beim nächsten mal der Nächste wert.
du musst die Strings ans Label anhängen, z.B. so:
label2.Text += Environment.NewLine + (string.Format("myArray[{0}]={1}\n", i, myArray[i]));
Hi,
String feldname = "City" ;
String variable = "Berlin" ;
myDataview.RowFilter = feldname + " = '" + variable + " ' ";
mfg,
daniel
Morgen 😉
Das mit dem Fileseitig war mir schon klar.
Nur bin ich halt am Zweifeln ob das so direkt geht.
Bei Firebird oder andren Datenbanken geht es ja nicht, dass die Datenbankdatei an sich auf nem Netzwerk liegt, und dann verwendet werden (zumindestens nach meinem Kenntnissstand).
Vielleicht hilft dir folgendes bei deinem Problem:
NAS devices should always be accessed using UNC names, such as \server\share. In its default state, SQL Server won't allow you to use a UNC path in place of a drive letter. So, you'll need to set a trace flag in order to change this behavior. The trace flag is 1807. If you're not sure how to set a trace flag, you'll want to check out Books Online.
Creating a device on a network path isn't any different from creating one on local storage, provided that the trace flag is turned on. So, if you're creating a database this isn't a big deal. If you need to copy a database from local storage to network storage, there are a couple extra steps. The problem is that the log file uses a different block size if it's on local storage or network storage. Which means it's not possible to use a log file from local storage on a remote storage device. Since the new backup format includes the log file, even if you go through the trouble of emptying out the log file, it isn't possible to use a backup to move data to network storage. Which means you'll need to copy the data file and create a new LDF file. Fortunately, Microsoft provided us with the sp_detach_db and sp_attach_db (and sp_attach_single_file_db) stored procedures. So, detach the database, copy the MDF files to the network device, and then use sp_attach_db (or sp_attach_single_file_db, as appropriate) to attach the database on it's network device. One additional note here, make sure you can checkpoint the database before you detach it. If you can't checkpoint, don't detach, because you won't be able to attach either.
gefunden auf http://www.sqlteam.com/article/sql-server-and-network-attached-storage
Wenn dein User ein Script schreibt, und du liest das dann irgendwie ein,musst du nichts escapen.
Escapen musst du das ganze nur, wenn du was direkt in der CS-Datei schreibst.
wenn du es wo ausliest, oder durchn user ins Programm bekommst, dann nicht 🙂
Mfg,
Daniel
Bist du dir sicher, dass du über den AttachDbFileName-Parameter eine Datenbankdatei angeben darfst, die im Netzwerk liegt?
Laut MS Technet ist dies nicht erlaubt, bzw. möglich:
Also the network share, HTTP paths, or Universal Naming Conventional (UNC) remote databases are not supported.
(http://technet.microsoft.com/de-de/library/ms345154.aspx)
mfg,
daniel
Hi,
soll der User später der Anwendung den Pfad als kommandozeilen-argument übergeben?
Wenn ja, muss er da den String sowieso nicht escapen.
Auch wenn der String über ne Textbox oder ähnliches kommen soll, musst du nicht Escapen.
Und wenn er das im Programmcode machen soll, also den aufruf, dann muss er sich wohl an das escapen halten.
Mfg,
daniel
Hallo,
deswegen hätte ich das mit WMI vorgeschlagen 😉
Ich hab damals als Abschlussprüfungs-Projekt eine Netzwerkinventarisierungs-Anwendung geschrieben, die genau das (Starten, Stoppen, Neustarten) von Services, Anwendungen... konnte.
Über WMI geht halt das ziemlich einfach, am remote-computer anzumelden:
//Connect to the remote computer
ConnectionOptions co = new ConnectionOptions();
co.Username = "john";
co.Password = "john";
System.Management.ManagementScope ms = new System.Management.ManagementScope("\\\\192.168.1.2\\root\\cimv2", co);
Deswegen habe ich den Vorschlag mit wmi gemacht 😉
Ansonsten steht in folgendem:
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2295585&SiteID=1
auch was über die Anmeldung am Remote-PC.
Mfg,
daniel
hi,
über WMI, Windows Management Instrumentations, müsste das ganze ziemlich einfach gehen. Da kannst z.B. deine Dienste von einem Rechner über ne Art SQL-Query abfragen:
// Die folgende Tabelle zeigt Beispiele für WMI-Ereignisabfragen.
// WQL Erläuterung
SELECT * FROM __InstanceModificationEvent WITHIN 5 WHERE TargetInstance ISA "Win32_Service" AND TargetInstance.State="Stopped"
// Alle fünf Sekunden wird geprüft, ob ein Dienst den Status Stopped bekommen hat.
Ausführung einer WMI-Ereignisabfrage in .NET
Lies mal folgendes nach, da gibts ein Beispiel fürs Auslesen der Dienste:
Mfg,
Daniel
Hi,
das einfachste ist folgendes:
Nach einem Klick auf "OK" hast du nun den MediaPlayer in der Toolbox, und kannst ihn einfach auf dein form ziehen 🙂
mfg,
daniel
Hi,
soviel ich mich erinnern kann ist der Assistent im Datei-Menü bei Projektmappe öffnen in der Ecke.
Dort kannst du dann das J#-Projekt öffnen, welches in C# konvertiert wird.
Am Ende hast du das ganze Projekt als C#-Projekt.
Das ist möglich, da ja in .NET die Hin-und-her konvertierung (mehr oder weniger) möglich ist.
mfg,
daniel
Diese DLL`s sollten ja dann normalerweise im .NET Framework enthalten sein.
Daher müsste alles funktionieren, wenn du das .NET Framework auch installierrst.
Am besten mal durchtesten, welche dateien du brauchst.
Wenn der NSIS-Installer das .NET Framework auf der Zielplattform installiert, geht das ohne Probleme.
Wenn dein Projekt weitere Bibliotheken benötigt, musst du diese natürlich auch in den installer einbinden.
Hi,
probier mal
Environment.Exit(0)
Ist natürlich nicht die schönste Art.
Besser wäre es, die Threads auf "IsBackground" zu setzen, dann werden die automatisch beim Beenden der Anwendung beendet.
hi,
Clipboard.SetText(listView1.SelectedItems[0].SubItems[1].Text.ToString());
so könntest das machen 😉
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + datei + ";");
so müsste es gehen 🙂
Hi,
ich kann dir auch folgenden Artikel im CodeProject empfehlen:
Die Klasse, die dorten vorgestellt wird, kann aus einem Text einen Code128 Barcode erzeugen. Der Barcode wird als Bitmap erzeugt, daher kannst du Ihn ganz einfach auf Ausdrucken oder so verwenden.
Ich nutze diese Klasse selbst, und bin sehr zufrieden damit 🙂
mfg
Daniel
Hi,
also es genügt eigentlich den COM - Port (SerialPort Steuerelement) zu öffnen.
Wenn dann Daten ankommen, wird vom SerialPort automatisch das Event
DataReceived
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
geworfen. Über
serialPort1.ReadExisting();
kannst du dann die Vorhandenen Daten auslesen.
lg,
daniel
// This snippet needs the "System.Diagnostics"
// library
// Application path and command line arguments
string ApplicationPath = "C:\\example.exe";
string ApplicationArguments = "-c -x";
// Create a new process object
Process ProcessObj = new Process();
// StartInfo contains the startup information of
// the new process
ProcessObj.StartInfo.FileName = ApplicationPath;
ProcessObj.StartInfo.Arguments = ApplicationArguments;
// These two optional flags ensure that no DOS window
// appears
ProcessObj.StartInfo.UseShellExecute = false;
ProcessObj.StartInfo.CreateNoWindow = true;
// If this option is set the DOS window appears again :-/
// ProcessObj.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
// This ensures that you get the output from the DOS application
ProcessObj.StartInfo.RedirectStandardOutput = true;
// Start the process
ProcessObj.Start();
// Wait that the process exits
ProcessObj.WaitForExit();
// Now read the output of the DOS application
string Result = ProcessObj.StandardOutput.ReadToEnd();
so sollte das ganze kein Fenster aufmachen 😉
Hi,
wenn ich das richtig verstehe, müsste dir die "Process"-Klasse weiterhelfen.
Über die kannst du Programme (extern) starten, und über die StandardInput und StandardOutput-Streams unter umständen mit denen kommunizieren.
Natürlich kannst du da auch parameter übergeben usw 🙂
Hi,
SELECT * FROM [Sheet1$]
Hast du hier den Namen der Seite der Excel-Tabelle eingegeben, der auch existiert?
Im Deutschen Excel heißen die Dinger ja "Tabelle1", "Tabelle2"....
Danach sollte die Abfrage auch gehen.
using Excel=Microsoft.Office.Interop.Excel;
Mach so nen using dann hast du auch Excel.blablabla 😉
edit: Ich hab Excel 11.0, aber wenn du die untere Lösung nimmst, greifst du ja nicht über Excel auf die Tabelle zu.
Diese Lösung über OleDb ist zu empfehlen, wenn auf Rechnern z.B. kein Excel installiert ist.
Hi,
soviel ich weiß gibt es das "ExcelObj" von Haus aus nicht.
Das würde dann z.B. so aussehen:
private Excel.Application ExcelObj = null;
ExcelObj = new Excel.Application();
// See if the Excel Application Object was successfully constructed
if (ExcelObj == null)
{
MessageBox.Show("ERROR: Excel konnte nicht geöffnet werden");
System.Windows.Forms.Application.Exit();
}
Danach kannst du mit deinem Excel - Objekt alles machen was du willst.
Du könntest die Excel - Datei natürlich auch via OleDB auslesen, dann muss auf dem PC kein Excel zum auslesen vorhanden sein:
using System.Data;
using System.Data.OleDb;
...
String sConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + [Your Excel File Name Here] + ";" +
"Extended Properties=Excel 8.0;";
OleDbConnection objConn = new OleDbConnection(sConnectionString);
objConn.Open();
OleDbCommand objCmdSelect =new OleDbCommand("SELECT * FROM [Sheet1$]", objConn);
OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();
objAdapter1.SelectCommand = objCmdSelect;
DataSet objDataset1 = new DataSet();
objAdapter1.Fill(objDataset1);
objConn.Close();
lg,
daniel
Hi,
probier mal den Unterstrich '_' 😉
lg,
daniel
Hi,
also ich verwende selbst den MS SQL Express parallel zu Firebird auf dem Webserver für meinen Online - Shop.
Läuft alles wunderbar, auch lizenztechnischt ist das in der Form ja sogar von Microsoft erlaubt.
Lg,
Daniel
Original von b-oern
Ohne PCap wird es in C# wohl kaum gehen, es sei denn du findest etwas ähnliches...
Gehen würde es schon irgendwie 😉
Aber warum das Rad erfinden wenns sowas schon gibt.
@naezl
Ich glaube, wenn du das ohne pcap oder andre komponenten machen willst, dann wird das alles andre als ein kurzer source.
edit:
gerade gefunden.
http://www.codeproject.com/cs/internet/networkmonitor.asp
Ich hab dir mal mein Testprojekt angehängt.
Probier mal aus ob das geht 🙂
Dem ausführenden Benutzer könnte das Recht für eine Operation fehlen, die in WinXP noch so ging.
Unter Vista hast du ja standardmäßig auf bestimmte Registry-Teile und den Programs - Ordner (glaube ich) keinen Zugriff mehr.
Oder führst du deine Anwendung als Admin aus?
Im Office Document Image Writer druckt er die linie bei mir auch 😉
Hast du bei dem Printdocument - control irgendwas spezielles eingestellt?
http://www.codeproject.com/cs/internet/sharppcap.asp
hier gäbs ein gutes Tutorial zur verwendung von PCap in C# - Projekten.
Weiß jetzt nicht obs dir in deinem fall zum ändern tips gibt, aber du kannst es ja mal versuchen 🙂
Hi,
hast du den Druck schon mal mit einem andren (PDF)-Drucker ausprobiert?
Hab mir kurz den Code kopiert, bei mir druckt er auf PDF schon was aus.
lg,
daniel
Wobeis für das Problem mit Lizenzierung / Testversionen auch massenhaft Komponenten gibt, die das schon können.
http://www.infralution.com/licensing.html ist z.b. sehr zu empfehlen. Benutz ich auch selber.
Vom Preis her OK und kann eigentlich alles... Erkennt sogar, wenn der User mit dem Datum des PC`s spielt 😉
Hi,
schau mal auf der Seite http://www.mysql.de/products/tools/migration-toolkit/ nach, da gibts das offizielle und kostenlose MySQL Migration Toolkit.
Ich hab in erinnerung dass der so gut wie mit jeder datenbank klarkommt, und das, was du beschreibst, eigentlich können sollte.
Siehs dir einfach mal an, mehr als nicht gehen kanns ned 😉
Mfg,
Daniel
Hi,
hab ich glatt vergessen 😉
Die Klasse findest du unter http://www.codeproject.com/cs/database/SubmitSQLInfoEnumerator.asp
lg,
daniel
Hi,
folgendes hätt ich im Angebot:
SQL-Server-Instanzen auflisten
Auflisten aller Datenbanken auf einem Server:
// Datenbankenholen
SQLInfoEnumerator enumerator = new SQLInfoEnumerator();
enumerator.SQLServer = Servername;
enumerator.Password = Passwort;
enumerator.Username = Benutzername;
String[] dbs = enumerator.EnumerateSQLServersDatabases();
foreach (String s in dbs)
comSQLServer_DB.Items.Add(s);
Würde auch über einen SQL-Befehl gehen, weiß aber gerade nicht welcher das ist.
Welche Version mindestens installiert sein muss?
Es muss die Installiert sein, mit der du Entwickelst.
Bei Visual Studio 2005 bzw. den Express-Produkten ist das Framework 2.0, ansonsten kanns auch 1.0/1.1 sein.
Hast du Schreibzugriff auf den Registry-key, den du da öffnen möchtest? Und ist der Key auch vorhanden?
Der Fehler in der 2. Zeile tritt auf, weil das Key-Objekt null ist. Da das null ist, geht auch die GetSubkeys-Funktion nicht.
Am Einfachsten wäre es wenn du das ganze nicht in ne klasse machst, sondern direkt im Event-Handler des Button - clicks.
WEnn du wirklich ne klasse willst, dann mach erst mal die Vererbung weg, und übergib die Daten (name usw). einfach im Konstruktor der Klasse als String.
private void btnSupportsenden_Click(object sender, EventArgs e)
{
supportmail mailsenden = new supportmail();
mailsenden._Mail();
this.Close();
}
Du erstellst hier mit dem new supportmail() zwar die Klasse, mithilfe du dann _mail() ausführst, allerdings wird gleichzeitig ein NEUER Dialog erzeugt.
Und da in dem Neuen Dialog nichts drinnensteht, versendet er auch leere Daten.
du darfst die Klasse supportmail nicht von supportmenue ableiten, wie schon gesagt.
Hi,
ich weiß zwar jetzt keine Komponente zum prüfen, aber die Namen der Bank kannst du ja anhand der BLZ auch selber ermitteln.
Gibt dazu bei der Deutschen Zentralbank glaub ich ein CSV-File mit allen BLZ zum download. Google sagt dir sicher wo genau 😉
mfg,
daniel
Wenn du in deiner 1. Codezeile einen Breakpoint setzt, kannst du das Programm schön Step für Step durchdebuggen 🙂
Hi,
Wenns in der Zeile auftritt, könnts entweder sein dass du in der SELECT - Abfrage einen Spaltennamen falsch hast, oder eine Spalte nicht exisitert...
Wenn du das Programm im Debug-Modus startest, solltest du doch mehr informationen bekommen... Da müsste dann auch der genaue Fehlergrund drinstehen.
mfg,
Daniel
Hi,
ich glaube dein Problem ist folgender ConnectionString - Teil:
AttachDbFilename=\"" + dbFile + "\"
Damit glaub ich greift der SQL Server DIREKT auf das File zu.
Probiers mal mit folgendem ConnectionString:
Data Source=Rechnername\SQLEXPRESS;Initial Catalog=Datenbankname;
Lg,
Daniel
hey danke 🙂
Jetzt gehts komischerweise.
Die Dateien hab ich schon mal des öfteren gelöscht, ging aber nicht damals.
Jetzt gings. Komische sache 😉
danke 🙂
lg,
daniel
Hi Jungs,
seit ein paar Tagen hab ich ein ziemlich böses Problem, was mir nicht mal mehr das Debuggen meiner Anwendung erlaubt.
Ich hab auch nichts besonderes am Code gemacht, wodurch ich mir das Problem erklären könnte.
Sobald ich die Windows - Anwendung im Debug-Modus starten will, kommt folgende Nette Exception:
Object reference not set to an instance of an object.
Das ganze Tritt beim Abfragen der Eigenschaft "Application.ProductVersion" auf.
Im Release-Mode geht alles einwandfrei, auch wenn ich die Stelle, wo der Fehler auftritt, auskommentiere, kommt in ner andren Zeile wieder ein Fehler, der mir komplett umerklärlich ist.
Hatte jemand das Problem mit dem Application.ProductVersion schon?
Viele Grüße,
Daniel
Probier mal die Eigenschaft "DoubleBuffered" der Form auf True zu setzen.
mfg
daniel
Und in der letzten Zeile willst du eine Funktion aufrufen...
Und wie ruft man ne funktion auf? 😉
Bzgl. Transparenz:
Du könntest z.B. in deinen Splash-Screen einen Timer einfügen, der z.B. auf ne halbe Sekunde eingestellt ist, und bei jedem Tick-Event des Timers die Transparenz mit
this.Opacity += 10;
erhöhen. Schon wirds ganz easy eingeblendet.
Siehe auch
Unter
findest du ein beispiel, wie du ne Access-DB direkt aus deinem C#-Programm komprimieren kannst. z.b. beim starten oder beenden deiner Anwendung.
lg,
daniel
Hi,
das einblenden ließe sich auch noch einfacher gestalten, in dem du z.B. die Opacity-Eigenschaft des Formulares einfach mit einem Timer oder so langsam erhöhst.
Dann musst die nicht den Umweg um die Windows-API nehmen.
lg,
daniel