Laden...
C
Benutzerbeschreibung

Forenbeiträge von cemizm Ingesamt 11 Beiträge

12.10.2007 - 14:20 Uhr

Ok,

zu jedem Kunden gibt es eine eigene CSV-Datei oder sind die Daten von allen Kunden in einer CSV-Datei?

Die Combox füllst du manuell oder stammen die auch von einer CSV-Datei womöglich sogar die selbe Datei wie oben?

12.10.2007 - 12:01 Uhr

Hi,

bin nicht gerade der Profi, aber ich würde meinen das es in einem Schritt nicht möglich ist.

Ich würde folgender maßen vorgehen:
1.CSV-Datei einlesen und anhand der Daten ein DataTable erstellen 1.Diesen DataTable an die Listbox binden

Es wäre auch etwas hilfreicher wenn du genau beschreiben würdest wie die Daten vorliegen und was du genau vorhast.

Mfg

12.10.2007 - 11:52 Uhr

Hmm, kann mir da keiner einen Denkanstoss geben?

mfg

11.10.2007 - 17:04 Uhr

verwendetes Datenbanksystem: Access Datenbank

Hallo,

ich lese folgendermassen Daten aus der DB aus:


SQLStr = "SELECT * FROM Policy WHERE Name='Active'";
daPolicy = new OleDbDataAdapter(SQLStr,con);
try
{
	con.Open();
	cbPolicy = new OleDbCommandBuilder(daPolicy);
	daPolicy.Fill(dsPolicy,"Policy");
}
catch
{

}
finally
{
	con.Close();
}

Nach der Bearbeitung des Datensatz versuche ich die Änderung mit folgendem Code zurück zuschreiben:


this.BindingContext[dsPolicy.Tables["Policy"]].EndCurrentEdit();

if(dsPolicy.HasChanges())
{
	try
	{
		con.Open();
		daPolicy.Update(dsPolicy,"Policy");
	}
	catch(Exception ex)
	{
		MessageBox.Show(ex.ToString());
		
	}
	finally
	{
		con.Close();
	}
}
else
{
	MessageBox.Show("Policy No Changes");
}

Bisher hat es immer so funktioniert, nur bekomme ich jetzt einen Syntax Fehler beim Updaten.


System.Data.OleDb.OleDbException: Syntaxfehler (fehlender Operator) in Abfrageausdruck '((id = ?) AND ((? = 1 AND Name IS NULL) OR (Name = ?)) AND ((? = 1 AND Explorer_NoRun IS NULL) OR (Explorer_NoRun = ?)) AND ((? = 1 AND Explorer_NoFind IS NULL) OR (Explorer_NoFind = ?)) AND ((? = 1 AND Explorer_NoClose IS NULL) OR (Explorer_NoClose = ?))'.
   at System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
   at System.Data.Common.DbDataAdapter.UpdatedRowStatus(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
   at System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)
   at System.Data.Common.DbDataAdapter.UpdateFromDataTable(DataTable dataTable, DataTableMapping tableMapping)
   at System.Data.Common.DbDataAdapter.Update(DataSet dataSet, String srcTable)
   at WebStatuion_2._.SecuritySettings.BtnSaveClick(Object sender, EventArgs e) in d:\Entwicklung\Terminal\WebStatuion 2.0\SecuritySettings.cs:line 350

Ich würde ja den Update Befehl manuell ausführen, jedoch hat die betroffene Tabelle ca. 100 Spalten was dann ziemlich aufwendig ist.

Weiss einer wie ich den Fehler beseitige, bzw kann man den Fehler überhaupt beseitigen, denn da scheint ja bei automatischen generieren des Update Befehls ein Fehler zu passieren.

Mfg

10.10.2007 - 14:58 Uhr

Vielen dank für die zügige Antwort.

Der Timer wird aber nicht in einer Windows.Forms benutzt. Der Timer ist in einer anderen Klasse und in einem anderen Projekt die unabhänging von Windows.Forms ist.

Ich werds mal gerade veruschen.

mfg

Edit:

Vielen Dank herbivore. Funktioniert nun einwandfrei. Um nicht dumm zu sterben, kannst du mir denn erklären worin der unterschied besteht?

10.10.2007 - 14:46 Uhr

Hallo,

ich habe da ein Problem das ich gerne mit euch teilen möchte 😉

Ich habe eine Klasse die per System.Timers.Timer ein Polling auf den LPTPort macht. Der Port Zugriff findet per Interop inpout32.dll statt. Wenn eine Veränderung auf dem Port entdeckt wird, feuert die Klasse ein Event.

Hier der Teil der Klasse wo das Polling statt findet:


void PollLPT(object sender,System.Timers.ElapsedEventArgs e)
{
	if(!TickExecute)
	{
		TickExecute = true;
		int Res = PortAccess.Input(LPTPort);
		
		if(Res != _initValue)
		{
			int nRes = Res;
			DateTime start = DateTime.Now;
			do 
			{
				nRes = PortAccess.Input(LPTPort);
			}while(nRes == Res && (start.AddSeconds(2) > DateTime.Now));
					
			Coin eargs = new Coin();
			eargs.Output = Res - _initValue;
			NewCoinInserted(eargs);
		}
		TickExecute = false;
	}
}

Soweit so gut und das event wird auch ausgelöst.

Wenn ich jetzt in einer Form diesen Event konsumiere und eine MessageBox anzeigen lasse läuft alles einwandfrei. Versucht ich aber zb. auf der Form eine Textbox zu füllen tut sich nicht mehr.
Beim debugen kommt er bis zu der stelle wo die TextBox gefüllt wird und bricht komplett ab. Sogar die Variable TickExecute die nach dem feuern des Events wieder auf false gesetzt werden sollte, bleibt auf true.

Ich hoffe es sind einge unter euch die schon einmal vor der artigen Problem standen und können mir beim Lösen weiterhelfen.

mfg

21.09.2007 - 08:38 Uhr

Dock doch einfach mal die Picturebox in der Form so das die Picutrebox immer die ganze Form füllt.

Mfg

31.07.2007 - 09:22 Uhr

Hi,



sqlcmd.CommandText = "INSERT INTO tbl_kunde(name,erstelltam) VALUES(?kndname,?create)";

sqlcmd.Parameters.Add("?kndname","testname");
sqlcmd.Parameters.Add("?create",DateTime.Now);
sqlcmd.ExecuteNonQuery();


mfg

31.07.2007 - 08:52 Uhr

@Jack_AI

Wie wäre es mit einem Webservice? Ich würde die ganzen Abfragen etc.. erst garnicht in die GUI reinpacken sondern im Webservice implementieren. So könnte man auch weiterhin die mächtigen werkzeuge wie DataSet etc.. nutzen.
*GUI ruft WebMethod holeKunde(int) auf *WebService sendet query an DB *Result wird dann entweder in ein DataSet/DataTable gepackt oder du implementierst eine Klasse Kunde mit den jeweiligen Attributen *Dann haste das DataSet bzw. Objekt gleich in der GUI als Rückgabewert der WebMethod holeKunde(int)

So müsstest du auch keine Datenbank-Abfragen oder Mysql-Passwörter übers Netz schicken und die MD5 verschlüsselung reicht vollkommen aus um Benutzerpasswörter zu übertragen. So würde auch der Fehler beim Benutzer liegen wenn er ein zu einfaches Passwort nimmt.

Nachteil:
Du müsstest zwei Anwendungen gleichzeitig entwickeln und auf jeder Seite auch wieder die Eingabeüberprüfung machen etc..

Vorteil:
Deine Anwendung ist GUI unabhänging, so hast du in Zukunft die Möglichkeit deine GUI bspw. in Java zu entwickeln oder die Anwendung auf ein anderes System (zb. Smartphone) zu portieren.

Mfg

19.07.2007 - 12:12 Uhr

Erstmal vielen Dank für die schnelle Antwort. Ich werde es gleich mal ausprobieren. Ich berichte dann.

Mfg

Edit:

Vielen Dank. So stelle ich mir ein Forum vor 🙂 Kompetent und schnell.

Mfg

19.07.2007 - 11:59 Uhr

Hallo Community,

erstmal sehr hilfreiches Forum hier. Ich konnte viele Probleme bei meinem Projekt schon durch die Suche beheben. Leider stehe ich jetzt vor folgendem Problem bei dem ich um einen neuen Thread nicht drumrum komme.

Ich habe einen DataSet den ich an verschiedenen Controls binde. Die Werte werden alle wie gewünscht angezeigt und Änderungen durch den Anwender (über die Form) werden auch an die entsprechende stelle im DataSet zurück geschrieben.

Wenn ich jetzt jedoch beispielsweise einen Button habe der den Wert einer TextBox, dass auch an das DataSet gebindet ist, auf einen bestimmten Wert setzt, wird diese Änderung nicht ins DataSet übernommen. Erst wenn der Anwender nach der Zuweisung einmal in die TextBox klickt wird der Wert übernommen.

Ich könnte den Wert direkt an die gewünschte stelle ins DataSet schreiben aber ich finde das nicht als gerade eine Elegante Lösung.

Vielleicht könnt ihr mir da weiterhelfen.

Mfg