Zugriff von aussen auf eine DB ist immer unsicher, sofern du keine verschlüsselte Verbindung hast. Besser ist es, den DB Zugriff lediglich über ein Webinterface anzubieten.
Ich denke in meinem Fall ist dann dies wohl eher das kleinere Problem.
Wenn es nicht mehr ist, kannst du eventuell komplett auf eine Datenbank verzichten und z.B. alles in XML ablegen.
Ungern, das meiste ist bereits mit Querys versehen.
Hallo
Ich wusste ehrlich gesagt nicht wohin mit meinem Thema.
Sofern dies der falsche Ort ist, bitte ich einen Mod diesen zu verschieben. 😃
Ich suche für meine Applikation einen günstigen Hoster der Remotezugriff auf eine SQL Datenbank bietet.
Gibt es eventuell auch free-hoster?
Und wie sieht es jeweils bzgl. Sicherheit der Daten aus (in der DB sind Addressen enthalten).
In der Datenbank enthalten sind ~3 Tabellen à 60 Datensätze.
Gruss Regenwurm
Hallo
Ich habe die Lösung für mein Problem gefunden. 😃
Die Exception wird nun in der IDE ganz normal angezeigt, und gekennzeichnet.
Beim Release-Build wird aber die gewünschte, eigene Form angezeigt.
ThreadExceptionEventArgs-Klasse
Gruss
Regenwurm
Nicht dass ich wüsste, da das iPhone unter einem Apple OS läuft.
Hi jack
Nein, zur Zeit benutze ich nur den GUI-Thread.
Wo sind die Events der AppDomain zu finden?
Hallo
Ich bin gerade dran einen eigenen Exceptiondialog zu implementieren.
Sprich anstatt, wenn der User bspw. eine Fehlkonvertierung macht und diese noch nicht im Programmcode behandelt wird, der erscheinenden roten Dialogbox "Es ist ein Fehler aufgetreten, Debug, Ok", soll eine von mir erstellte Form erscheinen in der die Exceptiondetails stehen.
Ganz unten auf der Form hat der User die Möglichkeit, die ganzen Details mir per Email zukommen zu lassen.
Das ganze funktioniert auch TipTop in der Entwicklungsumgebung..!
Starte ich die .exe jedoch aus dem Debug Ordner aus, kommt wie immer die rote Dialogbox.
Um die Form aufzurufen, habe ich einfach in "Program.cs" den "Application.Run()" Aufruf mit einem try-catch Block umlegt:
static void Main()
{
frmErrorhandler Errorhandler;
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
try
{
Application.Run(new frmLogin());
}
catch(Exception ex)
{
if (ex.InnerException != null)
{
Errorhandler = new frmErrorhandler(ex.Message, ex.ToString(), ex.InnerException.ToString(), ex.StackTrace.ToString());
}
else
{
Errorhandler = new frmErrorhandler(ex.Message, ex.ToString(), "null", ex.StackTrace.ToString());
}
Errorhandler.Show();
Application.Run();
}
}
Wer kann mir helfen?
Grüsse Regenwurm
Hallo
Du darfst nicht von einem Thread auf ein Objekt zugreiffen, welches in einem anderen Thread erstellt wurde.
--> [FAQ] Controls von Thread aktualisieren lassen (Control.Invoke)
Jep, habe es vorhin gerade noch einmal durchgelesen 😃
Danke auch dir 😃
Hier nochmal die "Lösung".
string Pfad = null;
private void UploadFile()
{
string FTPKomplettPfad = null;
/* Pfad invoken, welche raufgeladen werden soll */
#region Invoking des Dateipfades
Pfad = getPath();
if (Pfad == null)
{
//2.Durchlauf vom Thread
//Einfach abbrechen
return;
}
#endregion
/* Relevante Daten (Host, Username, Passwort) */
#region Daten auslesen
string host = null;
string username = null;
string passwort = null;
StreamReader readInfos = new StreamReader(Application.StartupPath + @"/config.ini");
string[] output = readInfos.ReadToEnd().Split("\r\n".ToCharArray());
List<string> infos = new List<string>();
foreach (string s in output)
{
if (s != "")
{
infos.Add(s);
}
}
switch (infos.Count)
{
case 1:
//Keine Benutzerdaten im File enthalten.
host = infos[0];
break;
case 3:
//FTP Host + Benutzerdaten im File enthalten
host = infos[0];
username = infos[1];
passwort = infos[2];
break;
default:
MessageBox.Show("Die Konfigurationsdatei scheint beschädigt zu sein!", "Beschädigte conf-Datei", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
#endregion
//Kompletter FTP Pfad setzen und darauf verbinden.
FTPKomplettPfad = "ftp://" + host + "/Software/MiniSoft/" + new FileInfo(Pfad).Name;
FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(FTPKomplettPfad);
if (username != "")
ftp.Credentials = new NetworkCredential(username, passwort);
//Diverse FTP Einstellungen
ftp.KeepAlive = true;
ftp.UseBinary = true;
ftp.Method = WebRequestMethods.Ftp.UploadFile;
#region File zerlegung + upload
/* File wird in Bytes zerlegt */
FileStream fs = File.OpenRead(Pfad);
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
fs.Close();
/* File wird raufgeladen */
Stream ftpstream = ftp.GetRequestStream();
ftpstream.Write(buffer, 0, buffer.Length);
ftpstream.Close();
#endregion
MessageBox.Show("Die neue Datei wurde erfolgreich hochgeladen", "Upload erfolgreich", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
private void getPath()
{
if (txtFilePath.InvokeRequired)
Invoke(new MethodInvoker(UploadFile));
else
Pfad = txtFilePath.Text;
return null;
}
Grüsse Regenwurm. 😃
€: Nicht perfekt, aber sie funktioniert. :-x
Ich muss nun doch noch einmal nachfragen.
Ich habe das ganze nun so umgesetzt.
Jedoch probiert er bei mir die Funktion 2x durchzulaufen.
public void UploadFile()
{
string Pfad = null;
string FTPKomplettPfad = null;
/* Pfad invoken, welche raufgeladen werden soll */
#region Invoking des Dateipfades
if (txtFilePath.InvokeRequired)
Invoke(new MethodInvoker(UploadFile));
else
Pfad = txtFilePath.Text;
#endregion
/* Relevante Daten (Host, Username, Passwort) */
#region Daten auslesen
string host = null;
string username = null;
string passwort = null;
StreamReader readInfos = new StreamReader(Application.StartupPath + @"/config.ini");
string[] output = readInfos.ReadToEnd().Split("\r\n".ToCharArray());
List<string> infos = new List<string>();
foreach (string s in output)
{
if (s != "")
{
infos.Add(s);
}
}
switch (infos.Count)
{
case 1:
//Keine Benutzerdaten im File enthalten.
host = infos[0];
break;
case 3:
//FTP Host + Benutzerdaten im File enthalten
host = infos[0];
username = infos[1];
passwort = infos[2];
break;
default:
break;
}
#endregion
//Kompletter FTP Pfad setzen und darauf verbinden.
FTPKomplettPfad = "ftp://" + host + "/Software/MiniSoft" + new FileInfo(Pfad).Name;
FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(FTPKomplettPfad);
if (username != "")
ftp.Credentials = new NetworkCredential(username, passwort);
//Diverse FTP Einstellungen
ftp.KeepAlive = true;
ftp.UseBinary = true;
ftp.Method = WebRequestMethods.Ftp.UploadFile;
#region File zerlegung + upload
/* File wird in Bytes zerlegt */
FileStream fs = File.OpenRead(Pfad);
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
fs.Close();
/* File wird raufgeladen */
Stream ftpstream = ftp.GetRequestStream();
ftpstream.Write(buffer, 0, buffer.Length);
ftpstream.Close();
#endregion
MessageBox.Show("Die neue Datei wurde erfolgreich hochgeladen", "Upload erfolgreich", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
Warum?
Grüsse
Regenwurm
Hallo JAck30lena
Perfekt! Vielen Dank. 😃
Grüsse
Regenwurm
Hallo
Ich möchte, dass mein Programm einen Text, welcher in einer Textbox in dem GUI-Thread liegt, in einem 2.ten Thread bearbeiten kann.
Damit ich eine CrossThreadException bekomme, bin ich mittels google auf folgende Antwort gestossen:
http://bytes.com/topic/c-sharp/answers/567801-cross-thread-operation-not-valid#post2218778
Irgendwie will das ganze bei mir nicht funktionieren, bzw. ich habs nicht so wirklich verstanden.
public delegate void getPath(string str);
public event getPath gp;
public frmUploader()
{
InitializeComponent();
this.gp += new getPath(frmUploader_gp);
}
void frmUploader_gp(string str)
{
stream = File.OpenRead(str);
}
/* ... */
/* File in byte array laden */
if (this.txtFilePath.InvokeRequired)
{
Invoke(gp, new object[] { txtFilePath.Text });
}
else
{
stream = File.OpenRead(txtFilePath.Text);
}
Logischerweise gibt er mir wieder eine CrossThreadException aus, weil ich den Text aus der Textbox übergeben will..
Was muss ich sonst übergeben?
Ich hoffe ihr könnt mir helfen. 😃
Regenwurm
Hallo zusammen
Ich frage mich gerade, wie ich mittels C# die physische (tatsächlich am Computer angeschlossen Bildschirme) Anzahl der Bildschirme ermitteln kann..
Mittels
foreach (Screen s in System.Windows.Forms.Screen.AllScreens)
{
//...
}
kann ich zwar eine Anzahl ermitteln, jedoch müssen nicht alle Bildschirme angeschlossen sein.
Gruss
Regenwurm
Hallo
Ich speichere Picturebox Objekte in einem Array..
Später will ich auf die einzelnen Objekte zugreiffen, genauer gesagt auf das Attribut "Left" (X-Position).
Jedoch, erhalte ich immer den Wert 0, somit kann ich auch die Labels unten nicht dynamisch perfekt hinsetzen.
Woran liegt das ganze?
Die Funktion getPctrLeft() gibt den einzelnen Pictureboxen ihren "Left" Wert zurück.
public partial class frmMultiMonitor : Form
{
Monitor[] anzMonitore = new Monitor[0];
PictureBox[] PictureBoxen = new PictureBox[0];
ArrayList Label = new ArrayList();
public frmMultiMonitor()
{
InitializeComponent();
lblProgress.Text = "Wilkommen zur Multimonitor Support-Funktion" + Environment.NewLine +
"Das Programm durchsucht ihren Computer nun nach verschiedenen " + Environment.NewLine +
"Monitoren...";
initializeMonitor();
retrieveInformations();
}
public void initializeMonitor()
{
//..Weist den Elementen im Array das Picturebox - Objekt zu.
}
public void retrieveInformations()
{
for (int i = 0; i < anzMonitore.Count(); i++)
{
anzMonitore[i] = new Monitor();
}
foreach (Screen s in System.Windows.Forms.Screen.AllScreens)
{
int Height = s.WorkingArea.Height;
int Width = s.WorkingArea.Width;
int Farbtiefe = s.BitsPerPixel;
if (s.Primary)
Height = s.WorkingArea.Height + WindowHelper.GetTaskbarHeight();
Array.Resize(ref PictureBoxen, PictureBoxen.Count() + 1);
initializeMonitor();
addCtrl(new PictureBox(), Height, Width);
addCtrl(new Label(), Height, Width, Farbtiefe);
lblProgress.Text = "Es wurden " + PictureBoxen.Count() + " Monitore gefunden!";
}
}
public void addCtrl(Control c, int Height, int Width)
{
c.Top = 12;
c.Left = getPctrLeft();
c.Height = Height / 20;
c.Width = Width / 20;
c.Name = PictureBoxen.Count().ToString();
c.BackColor = Color.Gray;
panel1.Controls.Add(c);
}
public void addCtrl(Control c, int Height, int Width, int Farbtiefe)
{
c.Width = 1;
c.Text += "Auflösung: " + Width + "*" + Height + Environment.NewLine;
foreach (char chr in c.Text)
{
c.Width += 6;
}
c.Text += "Farbtiefe: " + Farbtiefe + Environment.NewLine;
c.Height = 40;
c.Top = PictureBoxen[PictureBoxen.Count() - 1].Height + 20;
c.Left = (PictureBoxen[PictureBoxen.Count() - 1].Left + (PictureBoxen[PictureBoxen.Count() - 1].Width / 2) - 20);
panel1.Controls.Add(c);
}
public int countCtrl()
{
int iCount = 0;
foreach (Control ctrl in panel1.Controls)
{
if (ctrl.GetType() == typeof(PictureBox))
{
iCount++;
}
}
return iCount;
}
public int getPctrLeft()
{
int iWidth = 0;
if (PictureBoxen.Count() == 1)
{
iWidth = 50;
}
else
{
for (int i = 0; i < PictureBoxen.Count(); i++)
{
if (PictureBoxen[i].Width != 0)
iWidth += PictureBoxen[i].Width;
}
iWidth += countCtrl() * 20;
}
return iWidth;
}
}
class WindowHelper
{
/* ... */
}
}
Grüsse
Regenwurm
Hier mal eine Liste von kostenlosen Anbietern:
Wer ASP.net einfach nur mal im Internet ausprobieren will, findet
> ein kostenloses ASP.net Hosting Angebot. Man bekommt 20MB Webspace,10MB SQL Speicherplatz. Allerdings dürfen normale Dateien nur 100kb groß sein....
Aber zum ausprobieren ist der ganz gut.
Gibt es sowas zZt irgendwo?
Der obengenannte Link führt mich auf einen russischen, kostenpflichtigen Hoster.
Sofern du ASP verwendest ja.
Bei .NET würde ich dir zu den "eigenen" HTML-Objekten raten.
verwendetes Datenbanksystem: <SQL 2005(?)>
Hallo 😃
Ich bin an einem Punkt angelangt in dem mein Programm nicht mehr mit der Datenbank auf dem aktuellen Stand ist.
Bei meiner Applikation ist es möglich, dass 2 Benutzer gleichzeitig auf die Datenbank zugreiffen.
Beispiel:
User A greift auf die DB zu und schaut ob Der Wert X = 1 ist. -> true
User B greift auf die DB zu und ändert den Wert X auf 2.
User A ist immernoch im Objectcontext drin und schaut sich den Wert wieder an. --> X = 1.
Wie aktualisiere ich jetzt den ganzen Context, damit auch User A merkt, dass X = 2 ist?
Grüsse
Regenwurm
Hallo 😃
Ich probiere gerade alle Elemente in allen Listen in einer Klasse nach etwas abzusuchen..
Jedoch will die for-each Schleife nicht wirklich über alle Listen gehen.
Ich bekomme immer den Fehler, weil die Klasse angeblich keinen 'GetEnumerator' public definiert hat.
Hier ist mein Code:
HTML tag_html = new HTML();
foreach(List<string> liste in tag_html)
{
foreach (string tag in liste.OrderBy(pl => pl.Substring(0, 1)))
{
//...
}
}
Gruss
Regenwurm
Ich habe das Problem mittlerweile gelöst.
Einfach eine Methode in der partiellen Klasse erstellen + aufrufen, welche den Kontext manuell hinzufügt..
/* Liste Teams in der Listbox auf*/
foreach (Team t in ctx.Team)
{
t.addCTX(ctx); //<== Separate Methode.
if (t.containsUser(uID) == true)
{
lbTeams.Items.Add(t.Teamname + "-" + t.ID);
}
}
verwendetes Datenbanksystem: <SQL Server [ADO.NET / Entity Framework]>
Hallo Zusammen
Ich habe das Problem, dass wenn ich einen neuen Eintrag in die Datenbank machen will, er mir immer eine Exception ausgibt, dass 2 verschieden Objektkontexte nicht zu einer Beziehung hinzugefügt werden können.
Das ganze passiert folgendermassen hier:
Matches newMatch = Matches.CreateMatches(999, 0, 0, Convert.ToDateTime(tstxtDate.Text), 0, 0);
//newMatch.Protest = new Protest();
newMatch.Team = tContrahent.IDtoObject(tContrahent.ConvertExternTeamStringtoID(cbTeam.Text));
newMatch.Team1 = tContrahent;
//newMatch.Datum = Convert.ToDateTime(tstxtDate.Text);
ctx.AddToMatches(newMatch);
ctx.SaveChanges(true);
}
catch
{
MessageBox.Show("Es ist ein Fehler während der Matcherstellung aufgetreten." + Environment.NewLine + "Bitte überprüfe alle Eingaben.", "Cast Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
Das Problem liegt in der partiellen Klasse "Team.cs" begraben, wo ich manuell einen neuen Objektkontext erstelle, und nicht den Hauptcontext benütze:
TurnierContainer2 ctx = new TurnierContainer2();
Gut, das Problem lässt sich beheben in dem ich einfach keinen neuen erstelle, sondern die Variable nur definiere:
TurnierContainer2 ctx;
Jetzt gibt er mir aber in der Klasse eine NullReferenceException aus, weil ctx null ist (Ihr wird ja kein Wert zugeordnert).
Wie kann ich also in einer foreach-Schleife die Applikation dazu bringen, dass sie nicht den Standartkonstruktor aufruft, sondern einen Konstruktor, welcher als Parameter den Objectcontext benötigt?
foreach (Team t in ctx.Team)
{
if (t.containsUser(uID) == true)
{
lbTeams.Items.Add(t.Teamname + "-" + t.ID);
}
}
Gruss
Regenwurm
Ergäbe schlussendlich aber keinen Sinn.
Wenn du das Programm an mehrere Leute verteilst und unterschiedliche Keys hast, dann musst du auch soviele Versionen erstellen.
Ich denke am besten wäre wohl die Keys in einer Datenbank hinterlegen, und diese so zu aktiveren.
Schau dir am besten mal folgenden Link an: http://openbook.galileocomputing.de/visual_csharp/visual_csharp_09_001.htm
€: Wieder einmal zu langsam.. 😕
Hallo
Wenn ich mittels der foreach Schleife alle Controls in einem Panel anwähle (hier nur Checkboxen) nimmt er für eine unverständliche Reihenfolge.
Wie kann ich einstellen welche Checkboxen zuerst "angewählt" werden sollen?
Code:
foreach (ListViewItem lvi in listView1.Items)
{
if (Convert.ToInt32(lvi.SubItems[8].Text) <= 2)
{
foreach (CheckBox cbx in panel1.Controls)
{
if (!cbx.Name.StartsWith("cbc"))
{
if (cbx.Checked)
{
if (cbx.Text == "Telefonnummer")
{
Liste.Schreiben("0" + lvi.SubItems[dic[cbx.Text]].Text);
}
else
{
Liste.Schreiben(lvi.SubItems[dic[cbx.Text]].Text);
}
Liste.Zeileändern("rechts", "Cell", 1, "Move");
}
}
}
}
}
}
grz
Regenwurm
€: Ok rausgefunden.
Es ist die Reihenfolge, wie sie dem Panel hinzugefügt werden:
//
// panel1
//
this.panel1.Controls.Add(this.cbcMinis);
this.panel1.Controls.Add(this.cbcLeiter);
this.panel1.Controls.Add(this.cbcPraeses);
this.panel1.Controls.Add(this.cbName);
this.panel1.Controls.Add(this.cbVorname);
this.panel1.Controls.Add(this.cbStrasse);
this.panel1.Controls.Add(this.cbPLZ);
this.panel1.Controls.Add(this.cbOrt);
this.panel1.Controls.Add(this.cbGeb);
this.panel1.Controls.Add(this.cbTelefon);
Hmm.. ok verlesen, tut mir leid.
Die einzige Möglichkeit die mir gerade in den Sinn kommt, ist die listbox von der DataSource zu "entbinden", sprich zuerst einmal null setzen.
Danach die listBox entleeren und dann wieder binden.
listBox1.DataSource = null;
listBox1.Items.Clear();
listBox1.DataSource = myList;
Ansonsten wartest du noch auf ne Antwort von ner anderen Person hier.. 😃
Grüsse
Oh, sorry.. 😃
Ich nehme an du füllst die Listbox mittels einem Adapter?
Wenn ja, dann solltest du einfach das DataSet mit den Daten neu füllen.
this.tblTestTableAdapter.Fill(this.DataSet.tblTest);
grz
Probier mal die Methode 'DataBind()'.
grz
verwendetes Datenbanksystem: <SQL Server>
Hallo.
Ich versuche mittels dem Entity Framework einen Eintrag in eine Tabelle zu machen.
Durch die Navigation Properties werden dem Insert-Statement die Objekte von anderen Tabellen übergeben.
Ich bekomme jedoch immer folgende Excpetion:
Unable to update the EntitySet 'tblRanking' because it has a DefiningQuery and no <InsertFunction> element exists in the <ModificationFunctionMapping> element to support the current operation.
Ich habe das ganze nun mal in einer kleineren Konsolenapplikation nachgebaut, und es funktioniert immernoch nicht.
Der InputCode sieht folgendermassen aus:
case "ad":
/* Command: add(param1,param2,param3,param4,param5,param6,...)*/
string[] input2 = input.Split('(', ')', ',');
switch (input2[1])
{
case "Rangliste":
tblRanking neuesRanking = tblRanking.CreatetblRanking(int.Parse(input2[2]), int.Parse(input2[3]), int.Parse(input2[4]), int.Parse(input2[5]), int.Parse(input2[6]));
/* input2[x]:
* -> 2: Rang
* -> 3: Team_ID
* -> 4: Spiele
* -> 5: Punkte
* -> 6: Liga_ID
*/
foreach (tblTeam t in ctx.tblTeam)
{
if (t.ID == int.Parse(input2[3]))
{
neuesRanking.tblTeam = t;
}
}
foreach (tblLiga l in ctx.tblLiga)
{
if (l.ID == int.Parse(input2[6]))
{
neuesRanking.tblLiga = l;
}
}
ctx.AddTotblRanking(neuesRanking);
break;
case "Team":
break;
case "Liga":
break;
case "Teilnehmer":
break;
default:
break;
}
ctx.SaveChanges();
break;
Und ja, die eingegeben ID's für die Teamobjekte sind in den jeweiligen Tabellen enthalten.
Guten Apettit!
Regenwurm
Ich kenne zwar EF nicht, aber das macht mir nix 😄
Jedenfalls bei Linq2SQL würde man die Entities aus dem Context deleten, und am erst am schluss der Schleife Context.SubmitChanges() aufrufen.
ah, bei dir heisstes .SaveChanges - ja, das jedenfalls erst am Schluß.
Hat nicht wirklich was gebracht. 😕
Bekomme immer noch die gleiche Exception wie oben.
Hi 😃
Nein, es steht nichts bei "Delete Function".
Hallo,
Weil sonst die folgende Exception auftritt:
{"New transaction is not allowed because there are other threads running in the session."}
Was meinst du genau mit der Stored Procedure?
verwendetes Datenbanksystem: <SQL Server>
Hallo
Ich bin wieder an einem Punkt angelangt, an dem ich trotz probieren und studieren einfach nicht weiterkomme.
Es geht darum, einen bestimmten Datensatz in eine Tabelle zu löschen.
Mithilfe von Google bin ich auf den folgenden Artikel im MSDN gestossen.
Jedoch stellt sich mir die Frage, was hier genaue SalesOrderHeader ist.
SalesOrderHeader order =
context.SalesOrderHeader.Where
("it.SalesOrderID = @id", new ObjectParameter(
"id", orderId)).First();
Wenn ich nun beispielsweise hier den ausgewählten Datensatz in der tblZugerhoerigkeit löschen will, wie mach ich das?
Ich habe hier probiert, das ausgewählte Objekt zu löschen, kommt folgende Exception: "Unable to update the EntitySet 'tblZugehoerigkeit' because it has a DefiningQuery and no <DeleteFunction> element exists in the <ModificationFunctionMapping> element to support the current operation."
Das ganze sieht bei mir so aus:
using (TurnierApplikationEntities ctx = new TurnierApplikationEntities())
{
foreach (Zugehoerigkeit z in ctx.ZugehoerigkeitSet)
{
if (Player[0] == z.User_ID.ToString())
{
//kick den Spieler aus dem Team
DialogResult dr = MessageBox.Show("Wollen sie wirklich den Spieler " + Player[1] + " aus dem Team entfernen?", "Spieler kicken", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
if (dr == DialogResult.Yes)
{
/* * * * * * * drop * * * * * * */
ctx.DeleteObject(z); //!working
ctx.Connection.Close();
ctx.SaveChanges();
}
break;
}
}
}
Ah Perfekt!
Vielen Dank! 😃
Hallo Flo
Ah ok, hatte vorhin noch ne Idee, indem ich einfach jede Zeile mittels der foreach Schleife dem Objekt zuordne, und die dann schlussendlich "aussortiere".
Dies hier ist aber viel komfortabler. - Vielen Dank!
Ich habe noch eine Frage bzgl. der Selektion oder auch die generellen Abfragen in einer foreach-Schleife.
Ich kann ja nun beispielsweise bei 'foreach (Protest p in ctx.ProtestSet)' noch die Methode "OrderBy()" hinzufügen.
Wenn ich nun die ganzen Einträge nach der Spalte "SortierID" sortieren will, was muss ich da genau eingeben?
p.Spaltennamen geht nicht, habe ich bereits probiert.
Wenn ich OrderBy("SortierID") eingebe, will das ganze auch nicht und er gibt mir eine Exception zurück.
Doch das alleine genügt ja auch nicht, denn ich muss noch die Variante angeben (DESC, ASC).
Kannst du mir da vielleicht helfen?
Grüsse
Regenwurm
Hallo
Irgendwie habe ich nun den Thread aus den Augen gelassen. 😮
Das Beispiel oben ist vielleicht ein bisschen blöd formuliert.
Aber ich kann die Frage eigentlich auch konkret an einem anderen Beispiel stellen.
Ich habe nun den Anfang einer Methode, der folgendermassen aussieht:
foreach (Protest p in ctx.ProtestSet)
{
if (p.tblMatches.Match_ID == _mID)
{
Logischerweise wirft mir der Compiler wieder eine NullReferenceException an den Kopf bei tblMatches.
Das ist gut möglich, weil ich wahrscheinlich überhaupt nicht das geschrieben habe, was eigentlich passieren soll.
Mein Ziel ist es, alle tblMatches Objekte in der Tabelle "Protest" durchzugehen, und zu schauen welche Match_ID der Objekte gleich die der lokalen Variable _mID ist.
Ist denn dies nicht richtig?
Bzw. was fehlt hier noch?
Grüsse
Regenwurm
Hi Flo.
Vielen Dank.
Funktioniert! 😃
verwendetes Datenbanksystem: SQL Server 2005
Guten Morgen
Ich probiere gerade wieder mithilfe des Entity Frameworks einen Datensatz in die Datenbank zu schreiben.
normale "Scalar Properties" kann ich ja in der Methode Createxxxx(); ganz einfach hinzufügen.
Nur wie mach ich das mit den "Navigation Properties"?
Als simples Beispiel:
Ich habe eine tblProtest und eine tblMatches..
in die Tabelle 'tblProtest' will ich nun eine GUID, ein Titel (Beides 'Scalar Properties') und eine Match_ID (int) speichern.
Die Match_ID wird nun bei den Funktionsparametern nicht mehr angezeigt.
Die Match_ID ist im Code unter dem Variabeln Namen "_mID" gespeichert.
Ich habe euch zur Veranschaulichung das EDM der beiden Tabellen angehängt..
(Musste das Bild zippen, da sonst die max. Grösse gesprengt wurde. 😕 ).
Gruss
Regenwurm
Hallo
Bei Datenbankmodell.jpg (im .zip File zu finden) sieht man, dass sich tblTeam & tblTeam1 auf die Klasse Team beziehen.
Somit sollten sie mir doch ein ganzes Team zurückgeben.
verwendetes Datenbanksystem: <SQL Server>
Hallo
Ich habe eine Datenbank, welche in meiner Applikation mittels dem Entity Framework implementiert wird.
(:::
Wenn ich nun zum Beispiel, in der partiellen Klasse "Match" überprüfen will, ob ein bestimmter Spieler in einem Team ist, welches ein Match hat probier ich das folgendermassen:
public bool UserIsInOneTeam(int UserID)
{
bool r_return = false;
using (TurnierApplikationEntities ctx = new TurnierApplikationEntities())
foreach (Team t in ctx.TeamSet)
{
if ((tblTeam.ID == t.ID && t.containsUser(UserID) == true) || (tblTeam1.ID == t.ID && t.containsUser(UserID) == true))
{
return r_return = true;
}
}
return r_return;
}
Jedoch gibt mir der Compiler immer bei tblTeam oder tblTeam1 eine NullReferenceException zurück.
Obwohl: Die Tabellen richtig verbunden sein sollten, und nicht leer sind!
Ich kaue nun schon seit Tagen an dem Problem und habe es immer noch nicht ganz begriffen.
Sofern mehr Informationen von Nöten sind, kann ich diese gerne posten.
Kann mir jemand helfen?
Grüsse Regenwurm
Hallo 😃
Perfekt, nun habe ich das ganze verstanden!
Vielen Dank! 😉
Grüsse Regenwurm
Hallo jaensen
Ich habe mal deine Überlegung versucht "einzubauen".
Das ganze sieht nun folgendermassen aus:
private void CheckConfirmed(int UserID)
{
using (TurnierApplikationEntities ctx = new TurnierApplikationEntities())
foreach (Match m in ctx.MatchSet)
{
if (m.isNotConfirmed() == true)
{
LinkLabel mll = CreateLinkLabel(m.tblTeam, m.tblTeam1, m.Match_ID);
mll.LinkClicked += new EventHandler(mll_LinkClicked);
}
}
}
private LinkLabel CreateLinkLabel(Team Team1, Team Team2, int MatchID)
{
LinkLabel MatchLink = new LinkLabel();
MatchLink.Text = Team1.Teamname + " : " + Team2.Teamname;
MatchLink.ForeColor = System.Drawing.Color.Sienna;
return MatchLink;
}
Wenn ich nun bei
mll.LinkClicked += new EventHandler(mll_LinkClicked);
den Event erstelle, wie kann ich dann die Methoden "bearbeiten" (Form aufruf etc.)?
Bzw. sollte/muss ich eigentlich nicht bei
LinkLabel mll = CreateLinkLabel(m.tblTeam, m.tblTeam1, m.Match_ID);
ein Array erstellen?
Nun habe ich mich wohl gerade selber ein bisschen verwirrt. 😃
Grüsse
Regenwurm
Hallo 😃
Ich stehe vor folgendem Problem, wo mein Hirn gerade einfach nicht mehr weiter kommt.
Beziehungsweise stelle ich mir die Frage, ob dies möglich ist.
In meinem Programm hat jedes Team Spiele..
Und wenn ein solches Spiel noch nicht von beiden Seiten bestätigt wurde, soll ein Linklabel generiert werden mit der Aufschrift Team1 : Team 2.
Soweit so gut, nur wenn ich nun auf das Linklabel klicke, soll sich eine neue Form öffnen, bei welcher die ID des einen Teams übergeben wird.
Sprich, es soll ein Event generiert werden.
Ich habe mir nun vorgestellt, dass ich 2 Methoden (der überschaubarkeit halber) mache:
Die erste Methode überprüft in der Datenbank, ob noch unbestätigte Spiele für den Benutzer vorliegen.
Die 2. Methode wird von der ersten aus aufgerufen, und soll ein Linklabel erstellen, welches das Event "LinkClicked" hat.
In diesem Event soll dann halt der Aufruf auf eine andere Form sein, mit der Übergabe der ID des Teams.
Nun wie schon oben erwähnt, frage ich mich, ob ich in der Methode selber ein Event für das zurück zugebene Linklabel erstellen kann und wie.
Guten Appetit
Regenwurm
Hallo
Vielen Dank für die Antwort. 😃
Habe nun folgenden CmdCalculator als Basis genommen, und passe ihn an. 😃
--> Formel parsen
Grüsse
Regenwurm
Guten Abend.
Einen String kann man ja splitten indem man die Methode String.Split() verwendet.
Nun schön und gut, nur wie soll ich einen mathematischen String splitten, und dadurch noch die Regeln und Gesetze beachten (Punkt vor Strich, Klammer --> 1. Priorität, etc.)?
Ich habe mir darüber Gedanken gemacht indem ich, nachdem ich den String gesplittet habe den Ergebnissen jeweils ein Attribut "Priorität" zuweise und darin die Priorität angebe (1-x).
Doch wie soll ich nun das ganze realisieren?
Grüsse
Regenwurm
Hallo
Ich probiere gerade in einer Tabelle, eine Zelle nach rechts zu "rutschen".
Dazu habe ich den Befehl "MoveRight" genommen.
Jedoch will er nicht ganz.
Dafür habe ich folgende Funktion geschrieben:
public void Zeileändern(string Richtung, string Typ, int count, string wd)
{
object Type = Typ;
object Anzahl = count;
object ext = (object)wd;
if (wd == "wdMove")
{
ext = WdMovementType.wdMove;
}
switch (Richtung)
{
case "rechts":
sftWord.Selection.MoveRight(ref Type, ref Anzahl, ref ext);
break;
case "links":
sftWord.Selection.MoveLeft(ref Type, ref Anzahl, ref ext);
break;
case "oben":
sftWord.Selection.MoveUp(ref Type, ref Anzahl, ref ext);
break;
case "unten":
sftWord.Selection.MoveDown(ref Type, ref Anzahl, ref ext);
break;
default:
break;
}
}
Der Aufruft erfolgt folgendermassen:
Editor.Zeileändern("rechts", "Cell", 1, "wdMove");
Wo liegt nun genau das Problem?
Ich bekomme immer folgenden Error: "Bad Parameter (COMException was unhandled)"
€:
Habs nun hinbekommen (Nach einer ganzen Woche -.-').
Der erste Parameter muss auch noch umgewandelt werden:
public void Zeileändern(string Richtung, string Typ, int count, string wd)
{
object Type = Typ;
object Anzahl = count;
object ext = wd;
if (wd == "wdMove")
{
ext = WdMovementType.wdMove;
}
if (Typ == "Cell")
{
Type = WdUnits.wdCell;
}
switch (Richtung)
{
case "rechts":
sftWord.Selection.MoveRight(ref Type, ref Anzahl, ref ext);
break;
case "links":
sftWord.Selection.MoveLeft(ref Type, ref Anzahl, ref ext);
break;
case "oben":
sftWord.Selection.MoveUp(ref Type, ref Anzahl, ref ext);
break;
case "unten":
sftWord.Selection.MoveDown(ref Type, ref Anzahl, ref ext);
break;
default:
break;
}
}
**verwendetes Datenbanksystem: MS SQL Server **
Hallo
Bei meinem derzeitigen Projekt verlangt mein Betreuer von mir, dass ich das sogenannte "Entity Framework" verwende.
Ich habe mich im Internet umgeschaut, und herausgefunden dass damit irgendwelche SQL Abfragen und die generelle SQL Einbindung in das Programm erleichtert werden soll.
Aber wie genau muss ich das verstehen?
Freundliche Grüsse
Regenwurm
Ich plane einen Bot für ein MMORPG zu erstellen.
Es soll nicht ein nonplusultra Bot sein der perfekt wird, jedoch nimmt es mich mal Wunder wie solche Bots funktionieren, und ich denke dies wäre sicherlich eine denkbar logische Weise wie so ein Bot funktioniert.
Grüsse
Regenwurm
€: Musste jetzt zuerst mal bei Wiki schauen was du mit Man in the middle meinst.
Nein, soetwas habe ich nun wirklich nicht vor. 😉
Hallo
Ich habe eine Client - Server Verbindung von 2 kompilierten *.exe's vor mir.
Nun will ich mit einem dritten Programm den Client "kontrollieren".
Sprich, wenn vom Server ein bestimmtes Packet "in den Client" reinkommt soll mein drittes Programm dem Server etwas zurücksenden.
Muss ich dafür den Client in irgend einer Weise hooken?
Oder mit welchen Möglichkeiten kann ich dies realisieren?
Freundliche Grüsse
Regenwurm
ok thx 😉
Nun fehlt mir noch "FileStream" 😕
War mir klar, nur welche .dll?
Grüsse
Was brauch ich für assembly verweise?
Finde bei Google nichts gescheites.
Benutze VS 08.