Laden...
U
Benutzerbeschreibung
Auf eigenen Wunsch gesperrt

Forenbeiträge von User4999 Ingesamt 134 Beiträge

04.07.2006 - 14:58 Uhr

Hi,

ich bekomme in meinem Programm einen String der immer die gleiche Länge hat. In diesem stehen verschiedene Angaben, unter anderem Daten und Zeiten. Diesen string splitte ich mithilfe von Substring in die einzelnen Daten auf und schreibe diese in verschiedene Strings. Diese Daten müssen jetzt alle in eine Datenbank geschrieben werden (ich benutze Embedded Firebird). In der DB hab ich also für Datum/Zeiten und so eben DATE oder TIME Felder angelegt. Wie muss ich jetzt die Strings umkonvertieren so dass die Inhalte in diese Felder reingeschrieben werden können?
Hier die einzelnen Formate wie die Werte vorkommen können.

Zeiten:

hh:mm (09:49)
hh:mm:ss (00:00:36)
(m)m:ss (0:13)

Datum:

dd/mm (05/01)
(eventuell würde ich hier selber noch das Jahr anhängen, aber in dem String den ich empfange steht das so)

In Klammern das sind Beispiele.
Natürlich könnte ich auch alles als VARCHAR deklarieren, ich denke aber das ich dann später bei den Abfragen Probleme kriegen könnte, da ich dann Abfragen "von ---- bis ----" durchführen muss. Also nur Grenzwerte angeb und alles dazwischen auch angezeigt werden muss.

Gruß Zocker

04.07.2006 - 12:24 Uhr

Danke für den Tipp. Werd ich mal ausprobieren

04.07.2006 - 12:15 Uhr
  1. Hatte ich nicht. Jetzt hab ichs und kein Sound mehr.

  2. Hm... also wenn ich da auf die Länge eines Strings vergleiche und in der Variable nichts steht dann gibts Crash? Das würde dann auch das mit dem Interval erklären (wie im Edit beschrieben). Da bei 180 das Programm ja wesentlich eher zur While kommt als bei 180000.

  3. Ich glaube Closing wäre dann wohl das richtige.

Ich denke damit sind meine 3 Probleme gelöst. Danke!

04.07.2006 - 11:56 Uhr

Hi Leute,

Ich hab da drei Probleme/Fragen

  1. Ich habe eine Textbox die eine Art Eingabemaske besitzt. Die ganzen Eingaben die relevant sind fange ich über die Key-Events auf, alle anderen Eingaben werden ignoriert. Das geschieht dadurch das ich die Maximallänge auf 15 gesetzt habe und die Textbox jederzeit mit 15 Zeichen gefüllt ist. Dadurch habe ich jetzt das Problem das bei jeder Eingabe dieser Systemsound (der wenn man ein Zeichen irgendwo eingibt das aber nicht auf normale Weise verarbeitet werden kann) ertönt. Wie kann ich verhindern das dieser ertönt?

  2. Ich habe einen Timer und sein Tick-Event. In diesem Event habe ich eine While-Schleife. Jetzt kommt bei jedem ein Start eine Fehlermeldung die besagt "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt." Danach folgen noch ein paar Infos wo und wleche Zeile usw.. Das bezieht sich alles auf das Tick-Event und auf die Zeile mit dem While. Darf in einem Event keine While-Schleife sein oder woran könnte das sonst liegen?
    Edit:
    Ich habe jetzt festgestellt, dass diese Fehlermeldung erscheint wenn ich vorher den Interval setze. Den Wert dafür lese ich aus einer Datei, habe aber vergesen mit 1000 zu multiplizieren (da es ja milisekunden sind) so stand nur 180 im Interval. Damit scheint der Timer ein Problem zu haben (Standardmäßig steht da 180000 drin). Kann mir das jemand erklären wieso es da probleme gibt? Jetzt wo ich mit 1000 multipliziere kommt auch keine Fehlermedlung.

  3. Gibt es eine Möglichkeit eigenen Quellcode in das Schließen einzubringen (also wenn man auf das Kreuzchen oben rechts im roten Kästchen klickt ^^). Ich möchte das da gewisse Funktionen ausgeführt werden die ich auch so beim Beenden durchlaufe.

Gruß Zocker

03.07.2006 - 12:51 Uhr

Hi,

kann denn keiner helfen? 🙁
Würde gern etwas Feedback erhalten in Form von einer hilfreichen Antwort (selbst wenn die negativ ausfällt).

Gruß Zocker

30.06.2006 - 12:42 Uhr

Hi,

ich hol nochmal den Thread hier hervor weil ich nochmal Hilfe bei einem andren SQL Befehl benötige. Es geht um folgenden INSERT Befehl:

INSERT INTO Teilnehmer (tID, TeilnehmerNr, Anrede, Name, Vorname, PersonalNr, Endgeraet," +
"Abteilung1, Abteilung2, E_Mail) VALUES (GEN_ID(GEN_Teilnehmer_tID,1),'" + tb_nbsnr.Text + "','" +
cmb_nbsan.Text + "','" + tb_nbsname.Text + "','" + tb_nbsvname.Text + "','" +tb_nbspnr.Text + "',(" +
"SELECT egID FROM Endgeraeteart WHERE Bezeichnung='" + cmb_nbseg.Text + "'),(" +
"SELECT abtID FROM Abteilung WHERE Bezeichnung='" + cmb_nbsabt1.Text + "'),(" +
"SELECT abtID FROM Abteilung WHERE Bezeichnung='" + cmb_nbsabt2.Text + "'),'" + tb_nbsemail.Text + "');

Ich habe noch einen UPDATE Befehl der vom Prinzip her genauso aussieht. Grundsätzlich funktioniert das auch, aber wenn ich jetzt mindestens ein Feld unbefüllt lasse welches als Fremdschlüssel fungiert, dann wird beim INSERT der Datensatz nicht geschrieben und beim UPDATE der zu ändernde Datensatz gelöscht. Die Felder bzw Spalten die als Fremdshclüssel definiert sind sind: "Endgeraet, Abteilung1, Abteilung2". Die Befüllung der 3 Spalten erfolgt durch die SELECT Befehle.

Wie muss ich jetzt den Befehl abändern, so dass, wenn nichts oder ein falscher Wert angegeben wird, in die entsprechende Spalte nichts eingetragen wird?

Gruß Zocker

28.06.2006 - 19:59 Uhr

So, ich hab jetzt mein Problem folgendermaßen gelöst:

if(e.KeyCode == Keys.Enter && Textbox.Text.IndexOf("\r\n", 0) != -1)
{
	...
}

"\r\n" steht ja für Enter, da in der Eingabe bei mir kein Enterzeichen sein darf (ich benutz Multiline = true weswegen bei mir auch das "Enterzeichen" möglich ist, da das Geräusch unerwünscht ist welches bei Enter erklingt wenn Multiline = false ist) entferne ich dieses wenn ich denn Enter gedrückt habe. Wenn ich jetzt die MessageBox mit Enter bestätige wird ja nie ein Enter in den Text geschrieben... also besagte Zeichenfolge. Deswegen die Abfrage nach dem vorhanden sein von "\r\n".
Ist zwar eine nicht allzu offensichtliche Lösung, im Endeffekt gings ja aber nur darum an irgendwas festzustellen ob ich nun in der Textbox Enter gedrückt habe oder nicht. In meinem Falle eben so, vllt hilft das ja irgendwann mal jemanden 😁

Gruß Zocker

28.06.2006 - 19:05 Uhr

Hi Lynix,

also grundsätzlich funktioniert das mit new Form(). Das Problem is dann aber wieder das dann natürlich der Focus nicht mehr auf der Textbox liegt was auch wieder unerwünscht ist. Setze ich den Focus wieder auf die Textbox besteht das alte Problem weiterhin.

28.06.2006 - 17:54 Uhr

Naja so wie die Sache jetzt läuft wiederholt sich zwar die Meldung nicht beliebig oft. Jetzt passiert aber, da ich die Boolean sobald die Messagebox aufgerufen wird auf true setze, dass die Boolean auf true bleibt, wenn ich die MessageBox mit der Maus bestätige und wenn ich dann wieder Enter/Escape in der Textbox betätigte passiert nichts, da die Boolean immernoch auf true ist aufgrund des ausgebliebenen zweiten Tastendrucks.
Da dachte ich eben wenn man das auswerten könnte wäre das leicht zu beheben. So muss ich schauen ob ich diese Anweisung intelligenter positionieren kann oder das anderweitig löse. Die Boolean am Ende des Events wieder auf false zu setzen funktioniert leider nicht, da er den einen Durchlauf erst komplett durchläuft bevor der zweite Durchlauf startet (den ich verhindern will).

28.06.2006 - 17:40 Uhr

Hi,

in dem Zusammenhang mit der Sache hier stelle ich mir grade die Frage ob man auswerten kann mit was die MessageBox bestätigt wurde (Tastendruck/Mausklick).

28.06.2006 - 16:21 Uhr

hi mischa

ich musste das jetzt zwar ein bisschen anpassen aber vom Grundprinzip stimmt das so wie du es geschrieben hast. Auf alle funktioneirt das jetzt. Vielen Dank!

28.06.2006 - 15:19 Uhr

Hi,

ich möchte in einem SELECT Befehl Daten aus mehreren Tabellen auswählen die zueinander in Beziehung stehen. Hier erstmal der grundsätzliche Befehl:

SELECT TeilnehmerNr, Anrede, Name, Vorname, PersonalNr, Endgeraet, Abteilung1, Abteilung2, E_Mail, FROM Teilnehmer;

Endgeraet, Abteilung1 und Abteilung2 sind als Fremdschlüssel definiert. Ich möchte jetzt aus den Tabellen "Endgeraeteart" und "Abteilung" jeweils die Bezeichnung auswählen für die 3 Spalten. Als Bedingung soll gelten, dass die jeweilige ID (egID und abtID) aus den anderen Tabellen mit dem jeweiligen Wert in der Spalte übereinstimmt. Ich hab von verschiedenen Leuten gehört das das geht das man das als einen Befehl macht, nur können die mir auch nicht grade weiterhelfen (irgendwann mal gemacht und mittlerweile schon wieder fast vergessen weil sie damit nicht täglich arbeiten müssen 🙁 ). Ich hoffe mal irgendjemand von euch kann mir weiterhelfen

MfG

27.06.2006 - 15:48 Uhr

Danke.

Ich werds mal versuchen auch wenn es sich nach nem Megaquellcode anhört, da ich die Datasource erst zur Laufzeit im Quellcode festlege. Es sei denn man kann die Styles auch so festlegen.

27.06.2006 - 13:57 Uhr

Hi,

gibt es eine Möglichkeit dem Standarddatagrid ein Autosize für die Spaltenbreite beizubringen? Also ich mein jetzt damit dem Datagrid automatisch das zuzuweisen was man selber per Hand macht wenn man zur Laufzeit im Tabellenkopf auf einen Spaltenrand doppelklickt und zwar möglichst für alle Spalten.

MfG

PS: Kennt jemand eine kostenlose Alternative für das XtraGrid von devexpress.com? Ich hab mal im Rahmen eines Praktikums am Rande damit zu tun gehabt und fand das ziemlich nützlich.

26.06.2006 - 16:02 Uhr

Danke für den Tipp mit der Boolvariable. Jetzt funktinierts.

26.06.2006 - 14:47 Uhr

Hi,

ich hab hier eine Textbox bei der ich im KeyUp Event diverse Abfragen durchführe. Diese Abfragen beziehen sich unter anderem auf die Benutzung von Enter und Escape. Jetzt habe ich das Problem wenn ich Enter drücke und bei den Abfragen eine MessageBox angezeigt wird, wird das Event und somit die gleiche Abfrage nochmals ausgelöst wenn ich die Messagebox mit Enter bestätige. Somit habe ich dann eine Art Endlosschleife die ich nur durch die Benutzung der Maus unterbrechen kann. Wenn ich die MessageBox jetzt aber mit Escape bestätige wird das Event ebenfalls erneut ausgelöst und die Textbox ausgeblendet (was auch geschehen soll wenn Escape gedrückt wird... außer ich bestätige die MessageBox mit Escape).

Wie kann ich das erneute Auslösen des Events verhindern?

Gruß Zocker

24.06.2006 - 20:39 Uhr

hey super!

das funktioniert fast. Komplett richtig siehts so aus:

dataGrid1[dataGrid1.CurrentRowIndex, dataGrid1.CurrentCell.ColumnNumber].ToString();

Auf alle Fälle hat das jetzt geholfen. Thx!

24.06.2006 - 20:20 Uhr

Hi,

also ich benutze ein normales Datagrid das einfach beim VS 2003 mitgeliefert wird.
Ich habe hier im Forum auch gesucht und das mit dem DataGridView auch gelesen und habe es ausprobiert nur bin ich wahrscheinlich zu blöd eine DataGridView zu erstellen (in welcher Klase läge das denn normalerweise?) oder das gibts bei mir nicht.

Edit:

Übrigens DataGrid.CurrentRowIndex oder DataGrid.CurrentCell sind auch nich wirklich hilfreiche Eigenschaften oder es fehlt mir die weiterführende Idee.

24.06.2006 - 18:05 Uhr

Hi,

ich befülle ein Dataset aus einer Datenbank und dieses DataSet dient als DataSource für mein DataGrid. Jetzt möchte ich aber das der Inhalt von einer bestimmten Zelle der aktuell selektierten Zeile in eine Textbox geschrieben wird. Wie kann ich die Zelle ansprechen?

Gruß

Zocker

23.06.2006 - 18:51 Uhr

ah danke!

Die Suchfunktion hab ich wohl übersehen (oder net für voll genommen wegen dem "Google", sind ja auch überall Google Ads und so). Naja, ich werds auf alle Fälle mal probieren. Hoffentlich krieg ich das hin.

23.06.2006 - 10:36 Uhr

Hi,

also die Seite kenne ich. Ich hab dort gestern auch schon gesucht (ebenso woanders), aber nichts finden können. Vielleicht kannst du mir ja einen genaueren Link geben?

22.06.2006 - 23:49 Uhr

Hi,

ich möchte in meine Tabellen per Quellcode eine AutoID einfügen. Leider weiß ich nicht wie der Datentyp dafür aussieht. Insofern überhaupt die Möglichkeit für so etwas besteht. Ich benutze Embedded Firebird.

Gruß Zocker

22.06.2006 - 19:41 Uhr

hi,

das hört sich ja schonmal gut an 🙂
Kannst du mir auch noch verraten wie ich das mit dem Pooling im Connection-String abstelle?
Danke.

Edit:

Ich seh grad... wenn man die DLL einbindet bekommt man ja auch die ganzen Objekte für die Oberfläche... ^^ da krieg ich das dann ganz einfach raus. Ich hab nur komplett über Quellcode rumgefummelt bis jetzt. 🤔

Edit 2:

Also es klappt weiterhin nicht... ich hab jetzt zwar Pooling = False aber es kommt noch immer der gleiche Fehler.
Hier mal die Meldung die mir das VS gibt:

C:\Projekte\geb_erfass\Gebuehren.cs(518): 'FirebirdSql.Data.Firebird.FbConnection.CreateDatabase(System.Collections.Hashtable)' ist obsolet: 'Use CreateDatabase(string connectionString) instead'

Naja, ansonsten werden ich eben zur Datenbankerstellung den Connectionstring angeben.

Edit 4:

Ok... ich hoffe das is das letzte Edit X(
Hab jetzt gelesen das es egal ist (bei embedded gibts keine User)... und das das mit der Hashtable nur für ältere ADO.Net Provider Versionen zutrifft. Das könnten die bei dem Tutorial (als solches seh ich das an) ruhig auch mal hinschreiben 🙄 Also hab ichs die ganze Zeit richtig gemacht.

22.06.2006 - 15:44 Uhr

Hi,

ich bin gerade dabei mit embedded Firebird eine Datenbank zu erstellen. Ich hab mich unter anderem da dran gehalten:

http://www.codeproject.com/cs/database/EmbeddedFirebird.asp#xx1116744xx

wenn ich jetzt die Datenbank erstellen möchte, wie es dort vorgegeben ist, mit dieser Hashtable, dann bekomme ich folgende Fehlermeldung:

I/O Error for file CreateFile (open) "dbname.fdb"
Error while trying to open file

Das Visual Studio sagt mir, dass ich bei CreateDatabase anstatt dieser Hashtable den Connectionstring verwenden soll. Wenn ich das mache, wird die Datenbank auch erstellt. Natürlich is ja dann die Hashtable überflüssig, weil die nicht benutzt wird. Ich frage mich jetzt, ob das jetzt egal ist wie ich das mache oder ob eine der beiden Methoden besser ist (ich denke mal das mit der Hashtable wäre wichtig für Benutzer(?)). Jedenfalls... wenn ich mich mit dem Tool von IBExpert auf die DB verbinde dann kann ich bei den Logindaten alles möglich eingeben und komme drauf. Falls das erstellen mithilfe dieser Hashtable irgendwie funktioniert dann sagt mir das bitte 🙂

Gruß Zocker

19.06.2006 - 18:13 Uhr

Danke für den Tipp.

Leider nützten die Optionen nichts, ich habe einige der Optionen ausprobiert (das was mir am logischsten vorgekommen ist) meine Probs bestehen aber weiterhin.

16.06.2006 - 15:38 Uhr

Hi,

Ich schreibe grade hier eine Software in der ich eine Datenbank benutzen möchte. Ich möchte jetzt aber keine zusätzlichen Sachen installieren. Gibt es eine Möglichkeit Datenbanken zu erstellen/bearbeiten usw mit den "Standardmöglichkeiten" die ein DurchschnittsPC hat?

15.06.2006 - 22:43 Uhr

Hab doch noch 2 Probleme.

1.
Und zwar bekommt das Gerät welches ich anspreche nicht mit das ich die Verbindung mit Cloes() beende. Das heißt, das Gerät sendet dann weiterhin die Daten irgendwohin ins Netzwerk, natürlich kommen die dann nirgends an. Wie teile ich also dem Gerät mit das die Verbindung nichtmehr existiert?

Edit: Das trifft nur zu wenn ich während der Programmlaufzeit die Verbindung trenne. Schließe ich das ganze Programm und starte es später, dann empfängt das Programm alle Daten die in der zwischenzeit angefallen sind. Hat vielleicht einer ne Idee? Hab es schon versucht vor .Close() .Shutdown() zu benutzen, dann bekomme ich aber einen Fehlermeldung.

2.
Ich frage vor dem Lesen mit .Connected immer ab ob die Verbindung noch besteht. Wenn ich jetzt aber die Verbindung mit z.B. Hyperterminal aufbaue dann wird meine Verbindung getrennt (da maximal 1 Verbindung auf dem gleichen Port auf das Gerät möglich ist) da ich dann die Daten über das Hyperterminal empfange. Das Problem dabei ist: Die Abfrage auf .Connected bringt gar nix! Mein Programm sagt noch immer "verbunden". Wie kann ich jetzt feststellen ob ich nun wirklich verbunden bin?

MfG Zocker

15.06.2006 - 16:16 Uhr

Mittlerweile hat sichs erledigt. Jetzt funktioniert alles! 😁

15.06.2006 - 12:46 Uhr

Hi,

also ich hab jetzt versucht meinen Verbindungscode so umzuschreiben das ich das über die Sockets mache und nichmeht über TcpClient.
Ich habe ein Problem bei meinem IPEndPoint. Ich hab keine Ahnung wie ich dort die IP-Adresse angeben soll, so dass sie akzeptiert wird.
Ich lese die Angaben aus einer *.xml ein, danach stehen die in einem DataSet und ich versuche die Daten dann eben aus diesem DataSet direkt auszulesen ohne über irgendwelche Variablen zu gehen.
Das sieht dann folgendermaßen aus:

IPEndPoint ip = new IPEndPoint(Convert.ToUInt32(options.dsConfig.Tables[0].Rows[0]["IP-Ad"].ToString()),Convert.ToInt32(options.dsConfig.Tables[0].Rows[0]["Port"].ToString()));

Wenn ich das so habe bekomme ich folgende Fehlermeldung bezüglich Argument 1 (also die IP-Adresse): "Die Eingabezeichenfolge hat das falsche Format."

Also mir wäre es lieb wenn ich eben die Daten direkt aus dem DataSet nehmen könnte.

Edit: Bevor ich mich jetzt überhaupt damit abplage... kann man die Daten dann auch ganz einfach über einen Streamreader lesen oder geht das anders?

14.06.2006 - 16:24 Uhr

Also ich verstehe das jetzt nicht ganz. Du hast diese OpenSocket() Methode geschrieben und in dieser wird dann nur das Objekt erzeugt? oder kommt da noch mehr ?
So wie ich das jetzt verstehe hast du eine Verbindungsmethode in der du die Verbindung aufbaust usw.
Aber wie schauts bei dir aus wenn du was mit der Verbindung in einer anderen Methode machen willst (z.B. lesen)?
Falls bei dir jetzt doch die Möglichkeit besteht das Verbindungsobjekt in anderen Methoden zu verwenden und du weiterhin verbinden und trennen kannst sooft du willst, kannst du (oder vllt jemand anders) mir sagen wie man das mit TcpClient nachbauen könnte?.
Ich hatte eigentlich nicht vor die Verbindungen mit Sockets usw per hand zusammenzubasteln. Naja falls es doch so sein muss werd ichs wohl so machen müssen 🙁

14.06.2006 - 14:49 Uhr

Ok, jetzt habe ich ein neues Problem.

Ich bau die Verbindung auf, starte einen Timer und in dessen Tick-Event lese ich die Daten. Ebenso lass ich die Verbindung trennen wenn ich das Programm beende.

Da ich dieses TcpClient-Objekt nun in verschiedenen voids benutze, lasse ich das Objekt dort erzeugen wo alle graphischen Objekte die auf der Form vorhanden sind definiert werden (nicht in der region "Vom Windows Forms-Designer generierter Code").

Jetzt erzeuge ich das Objekt jedesmal neu sobald ich verbinden möchte und vorher schon eine Verbindung war die ich getrennt habe. Das nützt aber nichts, da ich immernoch denselben Fehler bekomme.
Ich habe auch ausprobiert generell das Objekt neu zu erzeugen, aber da bekomme ich sofort einen Fehler beim Lesevorgang bei der ersten Verbindung.

Wenn ich jetzt überall wo ich etwas mit meiner Verbindung mache (lesen/trennen usw) die entsprechenden Codezeilen auskommentiere und ebenso die Codezeile zur Objekterzeugung in dem anfangs erwähnten Bereich, ich also das TcpClient-Objekt nur noch in meiner verbinden/trennen Methode erzeuge und nur dort etwas mit meiner Verbindung dann klappt es. Dummerweise kann ich aber dadurch die andren Methoden/Events nich benutzen (z.B. den Timer_Tick).

Die Frage ist jetzt an welcher Stelle kann ich das Objekt erzeugen so das in allen anderen Methoden/Events das Objekt bekannt ist, ich aber auch so oft trennen und verbinden kann wie ich will?

Ich Hoffe das das jetzt zumindest heilwegs verständlich ist.

14.06.2006 - 12:41 Uhr

Und wie mach ich das dann das ich die Verbindung trenne, aber das Objekt weiterhin verwenden darf? Ich brauch jetzt nicht unbedingt einen Quellcode, aber ein Tipp/Hinweis wäre schön. Ich hoffe mal das ich mir meine Verbindung nicht von Grund auf selber "zusammenbasteln" muss. X(

14.06.2006 - 11:48 Uhr

Also disposed habe ich meines wissens nicht (wenn, dann unwissentlich).
Wie ich schon erwähnte trenne ich die Verbindung und dazu benutze ich die .Close()-Methode der TcpClient-Klasse.

14.06.2006 - 10:59 Uhr

Hi Leute,

ich schreibe hier ein Programm das sich über TCP/IP auf ein Gerät verbindet und Daten empfängt. Bisher klappt auch alles bis auf eine Sache.
Wenn ich die Verbindung das 1. mal aufbaue dann funktioniert alles. Trenne ich aber die Verbindung und versuche sie ein 2. mal aufzubauen bekomme ich eine Fehlermeldung die unter andrem sagt:

Auf das verworfene Objekt "System.Net.Sockets.TcpClient" kann nicht zugegriffen werden.

Ich verwende einen Switch der sich auf den Text eines MenuItems bezieht und je nachdem entscheidet ob getrennt oder verbunden werden soll.
Die IP-Adresse und der Port sind bei jedem Versuch die gleichen.
Mein Ziel ist es eben unendlich oft manuell zu verbinden/trennen können, keine Ahnung was da jetzt falsch ist. 🤔

Wäre schön wenn ihr mir helfen könntet.

Greetz Zocker