C-Sharp Befüllen einer Struktur mit Werten?
Ich habe folgendes kleines Problem:
Fehler 1 Ein Objekt vom Typ "string[]" kann nicht mit einem Auflistungsinitialisierer initialisiert werden. ***\Telefonverwaltung\Telefonverwaltung\myQuery.cs 30 24 Telefonverwaltung
http://msdn.microsoft.com/de-de/library/bb384224(VS.90).aspx
Leider ist meine OOP noch in Babyschuhen und ich habe keine Ahnung wie ich die structur umbauen muss damit det klappt.
Ziel des ganzen ist irgendwann mal mit
eine combobox füllbar ist.
und mit
das füllen einer Listbox funktioniert (tut es jetzt schon).
Beide Methoden funktionieren so weit nur meine Struc will nicht.
Danke an Alle die mir helfen können wie ich mir mehere "myquery" anlegen kann.
Fehler 1 Ein Objekt vom Typ "string[]" kann nicht mit einem Auflistungsinitialisierer initialisiert werden. ***\Telefonverwaltung\Telefonverwaltung\myQuery.cs 30 24 Telefonverwaltung
http://msdn.microsoft.com/de-de/library/bb384224(VS.90).aspx
Leider ist meine OOP noch in Babyschuhen und ich habe keine Ahnung wie ich die structur umbauen muss damit det klappt.
Ziel des ganzen ist irgendwann mal mit
public void fill_filter()
{
for (int i = 0; i < query_lv_kostenstellen.s_columns.Length; i++)
{
cb_lv_kostenstellen_filter1.Items.Add(Convert.ToString(query_lv_kostenstellen.s_columns[i]));
}
}
eine combobox füllbar ist.
und mit
public void fill_listview(string squery, ListView lv_lv)
{
...
}
Beide Methoden funktionieren so weit nur meine Struc will nicht.
Danke an Alle die mir helfen können wie ich mir mehere "myquery" anlegen kann.
namespace Telefonverwaltung
{
public struct myquery
{
public string s_columns;
public string s_from;
public string s_join;
public string mysqlquery;
public myquery(string s_columns, string s_from, string s_join)
{
this.s_columns = s_columns;
this.s_from = s_from;
this.s_join = s_join;
this.mysqlquery = "";
this.mysqlquery = "SELECT ";
foreach (string part in s_columns)
{
this.mysqlquery += part + ", ";
}
this.mysqlquery += s_join;
}
}
public partial class frm_telefonverwaltung
{
myquery query_lv_kostenstellen = new myquery
{
s_columns = {"kostenstelle_id","kostenstelle_nummer","kostenstelle_name","kostentraeger_nummer","kostentraeger_name","kostenstelle_bemerkung"},
s_from = "FROM kostenstelle",
s_join = "LEFT JOIN kostenbereich USING (kostenbereich_id) LEFT JOIN kostentraeger USING (kostentraeger_id)"
};
myquery query_lv_telefonhistory = new myquery
{
s_columns = {"blubb_id","blubb_nummer","blubb_name","blubb_nummer","blubb_name","blubb_bemerkung"},
s_from = "FROM blubb",
s_join = "LEFT JOIN blubb USING (blubb_id) LEFT JOIN blubbUSING (blubb_id)"
};
};
}
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 163575
Url: https://administrator.de/contentid/163575
Ausgedruckt am: 22.11.2024 um 13:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo s7mahess,
fangen wir mal an:
Die Zeilen 5-9 funktionieren zwar, machen aber keinen Sinn in der OOP, da hier die Kapselung (welche die OOP auszeichnet) nicht verwendet wird.
Ich würde die Variablen auf private setzten.
Der darauf folgende Konstruktor scheint in Ordnung zu sein.
Der Block in Zeile 28 kann so nicht funktionieren: Du erstellst eine neues Objekt myquery mit dem Schlüsselwort 'new' damit wird der Konstruktor von oben aufgerufen. Dieser benötigt allerdings runde Klammern und keine Geschwungenen (Zeile 29 & 33).
Zeile 30 kann so auch nicht funktionieren, da du hier versuchst das Array m.H. einer Initialisierungsliste zu initialisieren. Das funktioniert allerdings nur wenn in selber Zeile die Deklaration erfolgt. Diese ist bei dir allerdings bereits in Zeile 5 zu finden.
Ich würde die Zuweisung deer Variablen sowieso nicht im Konstruktor machen, sondern vorher.
Für die Zeilen 34-39 gilt entsprechendes.
Hier jetzt mal mein Ansatz:
fangen wir mal an:
Die Zeilen 5-9 funktionieren zwar, machen aber keinen Sinn in der OOP, da hier die Kapselung (welche die OOP auszeichnet) nicht verwendet wird.
Ich würde die Variablen auf private setzten.
Der darauf folgende Konstruktor scheint in Ordnung zu sein.
Der Block in Zeile 28 kann so nicht funktionieren: Du erstellst eine neues Objekt myquery mit dem Schlüsselwort 'new' damit wird der Konstruktor von oben aufgerufen. Dieser benötigt allerdings runde Klammern und keine Geschwungenen (Zeile 29 & 33).
Zeile 30 kann so auch nicht funktionieren, da du hier versuchst das Array m.H. einer Initialisierungsliste zu initialisieren. Das funktioniert allerdings nur wenn in selber Zeile die Deklaration erfolgt. Diese ist bei dir allerdings bereits in Zeile 5 zu finden.
Ich würde die Zuweisung deer Variablen sowieso nicht im Konstruktor machen, sondern vorher.
Für die Zeilen 34-39 gilt entsprechendes.
Hier jetzt mal mein Ansatz:
namespace Telefonverwaltung
{
public struct myquery
{
private string s_columns;
private string s_from;
private string s_join;
private string mysqlquery;
public myquery(string s_columns, string s_from, string s_join)
{
this.s_columns = s_columns;
this.s_from = s_from;
this.s_join = s_join;
this.mysqlquery = "";
this.mysqlquery = "SELECT ";
foreach (string part in s_columns)
{
this.mysqlquery += part + ", ";
}
this.mysqlquery += s_join;
}
}
public partial class frm_telefonverwaltung
{
static string s_columns_ks = { "kostenstelle_id", "kostenstelle_nummer", "kostenstelle_name", "kostentraeger_nummer", "kostentraeger_name", "kostenstelle_bemerkung" };
static string s_from_ks = "FROM kostenstelle";
static string s_join_ks = "LEFT JOIN kostenbereich USING (kostenbereich_id) LEFT JOIN kostentraeger USING (kostentraeger_id)";
myquery query_lv_kostenstellen = new myquery(s_columns_ks, s_from_ks, s_join_ks);
static string s_columns_th = { "blubb_id", "blubb_nummer", "blubb_name", "blubb_nummer", "blubb_name", "blubb_bemerkung" };
static string s_from_th = "FROM blubb";
static string s_join_th = "LEFT JOIN blubb USING (blubb_id) LEFT JOIN blubbUSING (blubb_id)";
myquery query_lv_telefonhistory = new myquery(s_columns_th, s_from_th, s_join_th);
}
}