Laden...

Forenbeiträge von baer999 Ingesamt 375 Beiträge

12.04.2012 - 21:53 Uhr

Und gibt es eine Kostenlose DB die ich komplett integrieren kann?
Muss ich dann alle SQL Statements und Abfrage selbst eintippen oder wie macht ihr das? thx

09.04.2012 - 22:20 Uhr

Firebird 2.5

Nach der Installation von Visual Studio C# 2010 Express, Firebird 2.5 und dem .NetProvider 2.7.5 (von Firebird Homepage) habe ich versucht eine Datenquelle vom Typ Firebird anzulegen für mein Projekt.

Zur Auswahl habe ich jedoch nur:

  • Microsoft Access
  • Microsoft SQL Server
  • Microsoft SQL Server Compact 3.5

Wie bekomme ich Firebird komplett integriert?
Sowohl als Datenquelle als auch als Typisierte Datasets?!
thx

20.03.2012 - 13:53 Uhr

Fehlermeldung: > Fehlermeldung:

Dynamische SQL-Generierung für den UpdateCommand wird nicht für einen SelectCommand unterstützt, der keine Schlüsselspalteninformationen zurückgibt.

        System.Data.SQLite.SQLiteConnection DB_Connection;
        System.Data.SQLite.SQLiteCommandBuilder CommandBuilder;
        System.Data.SQLite.SQLiteDataAdapter LicenceAdapter;

        BestellDBDataSet.LicenceDataTable dtLicence;
        

        public yoData()
        {
            DB_Connection = new System.Data.SQLite.SQLiteConnection(YouOrder.Properties.Settings.Default.YouOrderConnectionString);
            
            LicenceAdapter = new System.Data.SQLite.SQLiteDataAdapter("SELECT * FROM Licence", DB_Connection);
            CommandBuilder = new System.Data.SQLite.SQLiteCommandBuilder(LicenceAdapter);
        }

        public void LoadData()
        {
            dtLicence = new BestellDBDataSet.LicenceDataTable();
            LicenceAdapter.Fill(dtLicence);
        }

        public void SaveLicence()
        {
            BestellDBDataSet.LicenceRow drLicence = (BestellDBDataSet.LicenceRow)dtLicence.Rows[0];

            drLicence.Delete();

            LicenceAdapter.InsertCommand = CommandBuilder.GetInsertCommand();
            LicenceAdapter.UpdateCommand = CommandBuilder.GetUpdateCommand();
            LicenceAdapter.DeleteCommand = CommandBuilder.GetDeleteCommand();
            LicenceAdapter.Update(dtLicence);
        }
19.03.2012 - 15:25 Uhr

Version: SQLite 3

Ich habe SQLite 3 als DLL referenziert und habe SQLite FXnet 4.0 installiert, um in Visual Studio eine Schnittstelle zu den SQLite DBs zu haben.
Außerdem verwende ich ein typisiertes Dataset.

Wenn ich dann allerdings ein Update auf die Datenbank ausführe (per DataAdapter), kommt bspw. beim Löschen eines Satzes ein Fehler, da kein Delete Command erzeugt wird. Auch die Insert / Update Commands sind fehlerhaft wegen des zusätzlichen "sqlite_default_namespace".

Kann mir jemand helfen, was ich falsch mache oder könnte es sein, dass ich etwas vergessen habe zu installieren / einzustellen? thx

19.02.2012 - 00:02 Uhr

Scheinbar ist das ".[sqlite_default_schema]" das Problem, denn wenn ich während des Debuggings diesen Teil aus dem Command Insert String lösche, klappt der Insert ohne Probleme!

Ich suche jetzt nach einer Lösung, wie ich das immer draußen lassen kann. Hat da jemand eine Idee? thx

18.02.2012 - 23:25 Uhr

Installiert habe ich übrigens SQLite NetFX 4.0.

Das Insert Command sieht wie folgt aus:

CommandText: "INSERT INTO [main].[sqlite_default_schema].[Category] ([Cat_ID], [Category], [Description], [Created], [LastChange], [UserCreated], [UserChanged], [Sort], [Parent_Cat_ID]) VALUES (@Cat_ID, @Category, @Description, @Created, @LastChange, @UserCreated, @UserChanged, @Sort, @Parent_Cat_ID)"

Stimmt an dem schon was nicht? thx

18.02.2012 - 21:14 Uhr

Ich habe bei einem TableAdapter.Update-Befehl folgenden SQLite Fehler der aufpoppt, den ich nicht nachvollziehen kann:

SQLite error
near ".": syntax error

Ich nutze ein typisiertes Dataset und lasse mir die Update/Insert/Delete Statements dadurch automatisch generieren. Was kann da schief gelaufen sein? thx

18.02.2012 - 19:53 Uhr

Ich habe ein Problem beim anwenden der CASE Abfrage in einer Scalar Abfrage (über ein typisiertes Dataset):


---------------------------
Microsoft Visual Studio
---------------------------
Fehler bei der SQL-Ausführung.

Ausgeführte SQL-Anweisung: 

SELECT  CASE COUNT(*)  WHEN  NULL THEN 0 ELSE COUNT(*) END as result
FROM         Users
WHERE    Users.Password = @Password 
AND Users.Username = @User

Fehlerquelle: System.Data.SQLite
Fehlermeldung: SQLite error

Insufficient parameters supplied to the command
---------------------------

Kann mir da jemand sagen, was falsch sein könnte? thx

18.02.2012 - 00:49 Uhr

Also ich habe die DB komplett umgezogen auf SQLite und es scheint jetzt zumindest besser zu funktionieren. Die Schema Tabelle wird automatisch angelegt, aber Version 001 und 002 wird nicht migriert über diese Migration DLL:

namespace ClassLibrary1
{
	[VersionTableMetaData]
	public class CustomVersionMetaData : IVersionTableMetaData
	{
	    public string SchemaName
	    {
	        get { return "Database"; }
	    }
	 
	    public string TableName
	    {
            get { return "SchemaVersionInfo"; }
	    }
	 
	    public string ColumnName
	    {
	        get { return "Version"; }
	    }
	}

    public class V001_UpdateDB: FluentMigrator.Migration
    {
        public override void Up()
        {
            Create.Table("ABC").WithColumn("AAA");
        }

        public override void Down()
        {
            Delete.Table("ABC");
        }
    }

    public class V002_UpdateDB : FluentMigrator.Migration
    {
        public override void Up()
        {
            Create.Table("ABfasdC").WithColumn("AAasdfA");
        }

        public override void Down()
        {
            Delete.Table("ABfasdC");
        }
    }
}

Result CMD:
C:\Dokumente und Einstellungen\duan\Desktop\Ordering_neu\Ordering\Ordering\bin\D
ebug>FluentMigrator\Migrate.exe -a ClassLibrary1.dll -db sqlite -conn "Data Sour
ce = C:\Dokumente und Einstellungen\duan\Desktop\Ordering_neu\Ordering\Ordering\
bin\Debug\DBCHECK"
-- Using Database sqlite and Connection String Data Source = C:\Dokumente und Ei
nstellungen\duan\Desktop\Ordering_neu\Ordering\Ordering\bin\Debug\DBCHECK
-- VersionMigration migrating ================================================

-- CreateTable SchemaVersionInfo
-- VersionMigration migrated
-- Task completed.

18.02.2012 - 00:19 Uhr

Ich bekomme das mit der fehlenden Tabelle @@sys.SCHEMA nicht in den Griff. Habe jetzt mal versucht eine eigene Versionstabelle zu referenzieren, bekomme aber den selben Fehler. Nutzt noch jemand SQL Server CE? Falls nein, welche DB nutzt ihr? Hat jemand eine IDee was ich falsch machen könnte?

namespace ClassLibrary1
{
	[VersionTableMetaData]
	public class CustomVersionMetaData : IVersionTableMetaData
	{
	    public string SchemaName
	    {
	        get { return "Database"; }
	    }
	 
	    public string TableName
	    {
            get { return "SchemaVersionInfo"; }
	    }
	 
	    public string ColumnName
	    {
	        get { return "Version"; }
	    }
	}

    public class V001_UpdateDB: FluentMigrator.Migration
    {
        public override void Up()
        {
            Create.Table("ABC").WithColumn("AAA");
        }

        public override void Down()
        {
            Delete.Table("ABC");
        }
    }
}
13.02.2012 - 07:48 Uhr

Ich habe den SQL Server 2008 Express installiert und dort gab es dann die Möglichkeit lokale Datenbanken im SDF Format zu erzeugen. Die Version ist die 3.5er soweit ich das erkennen kann.

In der normalen Tabellensicht sehe ich auch keine SYS.SCHEME Tabelle, aber vielleicht ist sie ja auch standardmäßig unterdrückt?!

12.02.2012 - 00:50 Uhr

Ich habe bei selbst erzeugten Microsoft Reports das Problem, dass er mir 2 Seiten druckt, obwohl eine Seite vom Platz her locker ausreichen sollte. Im Screenshot kann man gut erkennen, was er druckt (Kopfzeile und Fußzeile jeweils auf jeder Seite - die eigentlichen Daten nur auf Seite 1).

Kann jemand sagen, welche Option oder Einstellung da bei mir nicht passen könnte? thx

12.02.2012 - 00:36 Uhr

Ich habe mich jetzt für FluentMigrator entschieden und alles nach den Vorgaben umgesetzt, allerdings kommt beim Start per CommandoZeile


C:\>/Lib/Migrate.exe -conn "Data Source=C:\Dokumente und Einstellungen\duan\Des
top\Ordering_neu\Ordering\Ordering\BestellDB.sdf" -db sqlserverce -assembly DBM
C:\>or.dll

dann folgender Fehler:

-- Using Database sqlserverce and Connection String Data Source=C:\Dokumente und
 Einstellungen\duan\Desktop\Ordering_neu\Ordering\Ordering\BestellDB.sdf
-- Beginning Transaction
!! An error has occurred.  The error is:
Die angegebene Tabelle ist nicht vorhanden. [ @@sys.SCHEMAS ]

Kann mir da jemand weiterhelfen?

Ich verwende SQL Server 2008 und eine SDF Datei als DB, wenn er schon bei Transaktion starten ist, heißt das dann auch, dass er auf die DB zugreifen kann, oder?
Im Visual Studio sehe ich die SCHEME Tabelle nicht, die er hier laut Fehlermeldeung vermisst...

10.02.2012 - 12:34 Uhr

SQL Server Express

Hallo,
ich bin zurzeit am Entwickeln einer Anwendung mit Datenbankanbindung. Von Zeit zu Zeit muss dabei die DB Struktur erweitert werden.
Meine Testanwender können daraufhin ihre alte DB mit der neuen überschreiben, wobei deren bisherigen Daten ebenfalls überklatscht werden.

Das will ich jetzt ändern, indem Ich DB Versionen einführe und entsprechende SQL Create Statements von neuen Spalten o.ä. einpflege, die dann automatisch ausgeführt werden, um die alte DB inkl. Daten auf die neue Struktur zu bekommen.

Meine Frage ist jetzt, wie ich mir da möglichst einfach diese SQL Statements generieren lassen kann bzw. ob es da schon Ansätze / lösungen gibt?

thx

03.02.2012 - 11:21 Uhr

Ich habe das ganze im Designer angelegt, also im Wizard des typisierten DataSets... d.h. ich kann da schlecht selbst die Parameter übergeben, soweit ich das aber nachverfolgen kann werden die Parameter korrekt übergeben im automatisch generierten Code (sprich: Parameters.Add).

Definiert habe ich im Wizard dann '%' + @param + '%' aber ich werde nach Feierabend heute nochmal versuchen es mit (Phone.Prefix + Phone.Suffix LIKE '%@PhoneNumber%') versuchen wie vorgeschlagen.

Gibt es evtl. einen Konkatinierungsbefehl für die Prefix und Suffix Geschichte ode rmeint ihr eher es liegt an dem Parameter?! thx

03.02.2012 - 00:10 Uhr

Hallo, ich habe ein typisiertes Dataset und dabei in einem DataAdapter eine eigene Abfrage generiert, die in der WHERE Bedingung zwei Felder konkatiniert:

WHERE     (Phone.Prefix + Phone.Suffix LIKE '%' + @PhoneNumber + '%')

Allerdings erhält diese Abfrage eine Fehlermeldung bei Programmausführung:

Fehler bei der Datenkonvertierung. [ OLE DB status value (if known) = 2 ]

Wenn ich das selbe ohne LIKE sondern mit "=" abfrage (ohne '%' natürlich) kommt der Fehler nicht... hat jemand eine Idee, was der Fehler sein könnte?
Prefix und Suffix sind bei vom Typ String!
thx

31.01.2012 - 16:27 Uhr

Also grundsätzlich ist das e.Cancel sicher das richtige Argument um das Schließen zu verhindern.

Allerdings weiß ich dabei nicht wie ich herausfinden kann, ob ein Item geklickt wurde, wenn ich im ContextMenuClosed Event bin. Das müsste ich herausfinden, sehe da aber keine Lösung. Hat jemand eine Idee? thx

31.01.2012 - 14:03 Uhr

Hallo,
ich möchte beim Rechtsklick auf die Spaltenüberschriften einer DataGridView ein Kontextmenu anzeigen lassen, in welchem alle möglichen Spalten dieser Grid angezeigt werden (mit der Möglichkeit diese einzelnen Felder zu selektieren oder abzuwählen).

Dabei habe ich beim Standard Kontextmenu das Problem, dass das Popup einfach verschwindet, wenn man ein Item angeklickt hat.

das e.Cancel = true, kann ich nciht verwenden wenn ich nicht weiß, ob ich ein Item geklickt habe oder nicht. Hat jemand eine Idee, ein Control oder ähnliches, um dieses Verfahren ins Programm einbinden zu könen? thx

31.12.2011 - 18:45 Uhr

Das AutoIncrement geht leider nicht, zumindest nach dem jetzigen Design...

Ihr habt schon recht, je länger ich drüber nachdenke, desto schlechter ist das Design der Tabelle, aber ich weiß auch nicht genau wie ich es anders machen soll.

Ich habe zwei Tabellen, die in dieser einen Tabelle gemeinsam Daten ablegen.

  1. Tabelle: Artikel (PrimaryKey: Art_ID)
  2. Tabelle: Größen (PrimaryKey: Var_ID)

die von mir beschriebene Tabelle dtArticles beinhaltet als PrimaryKey eine Kombination von Art_ID und Var_ID und speichert dazu einen Preis ab.

Art_ID / Var_ID / Price
1 / 1 / 1.00
1 / 2 / 1.20
[...]

Deshalb habe ich kein AutoIncrement ID für diese Tabelle. Die Eingabe erfolgt über eine Tabelle, die in der ersten Spalte alle Artikel aufführt und in den weiteren Spalten die Größen anzeigt, sodass man jedem Artikel zu jeder Größe einen Preis zuordnen kann.

Nach dem bearbeiten sollen die Änderungen in die DB geschrieben werden, dazu lösche ich zuerst den ganzen Inhalt dieser 3. Tabelle, um ihn dann neu aufzubauen. Beim Update auf die DB per Adapter erfolgt dann die PK Verletzung.

Wie würdet ihr das ganze aufbauen, damit man es mit AutoIncrement versehen kann? thx

31.12.2011 - 14:28 Uhr
History.Data.dtArticle = dtArticle;

Das ist die vollständige Zeile, habe das im ersten Thread nicht vollständig gepostet.

Ich kopiere die Tabelle also in die interne Tabelle dtArticle,
lösche dort bspw. die ID 1 und erzeuge dann eine neue DataRow mit ID 1.

Dann kommt beim zurückladen der internen Tabelle in die gebundene "History.Data.dtArticle" der PrimaryKey Error. Wie kann ich das umgehen?

thx

31.12.2011 - 01:45 Uhr

Hallo,
ich habe das Problem, dass ich eine DataTable die per DataAdapter an eine DB gebunden ist und ich diese DataTable vollständig neu aufbaue (alle Zeilen löschen und neu anlegen).
Beim DataAdapter.Update kommt dann ein PrimaryKey Problem:

Fehlermeldung:
In einen eindeutigen Index kann kein doppelter Wert eingefügt werden. [ Table name = Article,Constraint name = PK_Article ]

                dtArticle = dtArticle;
                ArticleAdapter.Update(History.Data.dtArticle);

Wie kann ich das unterdrücken, DataAdapter.ClearBeforeFill = true hat leider nicht geholfen.

thx

29.12.2011 - 18:17 Uhr

Bei welchem Event kann ich ansetzen, um das Editing Control einer DataGridView hinsichtlich der Font zu ändern?
thx

27.12.2011 - 17:06 Uhr

Also ich habe jetzt aus Verzweiflung alles in einem leeren Projekt nachgebastelt und stelle das selbe Verhalten fest.
Es wird nach dem BeforeSelect Event zwar die Zelle auf Edit Modus gesetzt, aber scheinbar wird im Nachgang nochmal der Fokus auf die Treeview gelegt... hat jemand eine Idee was das noch sein könnte? thx

        private System.Windows.Forms.TreeView treeView1;
        private System.Windows.Forms.DataGridView dataGridView1;
        private System.Windows.Forms.Button button1;

        bool ok = false;

        public Form1()
        {
            InitializeComponent();

            treeView1.Nodes.Add("%");
            treeView1.Nodes.Add("fdhsdfg");
            treeView1.Nodes.Add("2561264");

            DataTable dt = new DataTable();
            dt.Columns.Add("A");
            dt.Columns.Add("B");

            DataRow dr = dt.NewRow();
            dr[0] = "GHWAEGH";
            dr[1] = "GQEG";
            dt.Rows.Add(dr);

            dr = dt.NewRow();
            dr[0] = "GAEG";
            dr[1] = "HGWEZ";
            dt.Rows.Add(dr);

            dr = dt.NewRow();
            dr[0] = "GZQTZ";
            dr[1] = "GSAG";
            dt.Rows.Add(dr);

            dataGridView1.DataSource = dt;
        }

        private void treeView1_BeforeSelect(object sender, TreeViewCancelEventArgs e)
        {
            Console.WriteLine("treeView1_BeforeSelect");

            if (ok)
            {
                e.Cancel = true;

                ActiveControl = dataGridView1;
                DataGridViewRow dgvRow = dataGridView1.Rows[2];
                dgvRow.Cells[0].Style.BackColor = Color.Red;
                dgvRow.Cells[0].Selected = true;
                dataGridView1.BeginEdit(true);
            }
        }

        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            Console.WriteLine("treeView1_AfterSelect");
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            treeView1.SelectedNode = treeView1.Nodes[0];

            ok = true;
        }

26.12.2011 - 15:02 Uhr

Ich versuche beim BeforeSelect den Fokus auf eine DataGridView zu setzen und diese in Edit Modus zu versetzen, aber der Fokus liegt danach immer noch auf der TreeView, also liegt die Vermutung nah, dass doch noch was danach als Event ausgelöst wird, das verhindert, dass der Fokus am Ende tatsächlich auf der DataGridView liegt. Weiß jemand, welches Event das sein könnte?

        private void trvCategory_BeforeSelect(object sender, TreeViewCancelEventArgs e)
        {
            Console.WriteLine("trvCategory_BeforeIndexChange");

            if (!Valid)
            {
                e.Cancel = true;

                if (cell.DataGridView == dgvVariants)
                {
                    tabDetails.SelectedTab = tabSize;
                    History.frm.ActiveControl = dgvVariants;
                    dgvVariants.Focus();
                    dgvVariants.Select();
                    cell.Selected = true;
                    dgvVariants.CurrentCell = cell;
                    dgvVariants.BeginEdit(true);
                }
26.12.2011 - 14:02 Uhr

Ich habe mir mal die Demo Exe heruntergeladen, da scheint man die Hintergrundfarbe der eigentlichen Textbox nicht ändern zu können... insofern dürfte das wohl leider nichts für mich sein, auch wenn man da echt tolle Sachen einstellen kann...

26.12.2011 - 13:35 Uhr

Beim Klick (MouseDown) wird scheinbar bereits der Knoten selektiert bevor das BeforeSelect aufgerufen wird. Wie kann man da bereits verhindern, dass selektiert wird? thx

26.12.2011 - 13:02 Uhr

Also DoubleBuffered hat auch leider nicht geholfen. Ich habe folgende Events zugewiesen, vor allem wegen Drag and Drop Funktionalität. Welches könnte da Probleme machen?

            trvCategory.AfterSelect += trvCategory_IndexChanged;
            trvCategory.BeforeSelect += trvCategory_BeforeIndexChange;
            trvCategory.AfterLabelEdit += trvCategory_AfterEdit;
            trvCategory.ItemDrag += treeView_ItemDrag;
            trvCategory.DragEnter += treeView1_DragEnter;
            trvCategory.DragDrop +=treeView1_DragDrop;
            trvCategory.DragLeave += treeView1_DragLeave;
            trvCategory.DragOver += treeView1_DragOver;
            trvCategory.GiveFeedback += treeView1_GiveFeedback;
            trvCategory.NodeMouseClick += treeView1_NodeMouseClick;

thx

26.12.2011 - 02:13 Uhr

Hallo,
ich möchte beim Klicken auf einen Knoten im TreeView erst prüfen, ob er markiert werden soll oder nicht. Dafür habe ich das BeforeSelect Event genommen und e.Cancel = true gesetzt. Das funktionert leider nur teilweise, da der neu angeklickte Knoten kurzzeitig aktiviert wird, bevor die Markierung wieder aufgehoben wird.
Weiß jemand weshalb und wie ich das umgehen kann?
thx

15.12.2011 - 23:13 Uhr

Hallo,
ich bekomme leider beim selbst zeichnen immer nur den Hintergrund, heißt das ich muss die DropDownBox, den Datumstext und die entsprechende Textselektion (SelectionStart, SelectionLength) selbst zeichnen?
Falls ja wie kann man das umsetzen, hat da jemand Snippets oder einen Link zu einer entprechenden DateTime Control Umsetzung?

thx

19.11.2011 - 13:00 Uhr

Ok, habe jetzt eine ListView Extension auf CodeProject gefunden (http://www.codeproject.com/KB/list/ListViewCellEditors.aspx) mit SubItem Editing.

Ein Problem habe ich noch, die Icons werden beim FullRowSelect bei mir mit markiert (also farblich auch "verfälscht", da das Focus-Blau über die Icons gelegt wird). Kann man das verhindern, dass die Icons mit markiert werden und nur die eigentlichen Textspalten hervorgehoben werden?

19.11.2011 - 12:33 Uhr

Ja stimmt das wäre eine Möglichkeit. Könnte man dann bei dieser ListView die beiden Textspalten auch editierbar machen, ähnlich einer DataGridView, also quasi einer Textbox Eingabe, die nur Zahlen zulässt?
Ich habe das bisher immer mit DataGridView gemacht, da ich dachte, die wäre mächtiger und hat mehr Konfigurationmöglichkeiten.

19.11.2011 - 12:19 Uhr

Hallo,
ich habe hier einen Screenshot eines Programms, das eine DataGridView verwendet und eine Row mit zwei Symbolen links neben den Textdaten anzeigt, ohne dass diese einen ColumnHeader haben o.ä.

Kann mir jemand sagen, wie man so etwas umsetzen könnte?

Danke!

15.11.2011 - 15:01 Uhr

Leider nicht.

Ich loope über ARTICLE und zu jedem dieser Positionen gibt es 0..n ZUTATEN, die direkt unter dem Artikel per SubReport ausgegeben werden sollen.

Deshalb muss ich an den SubReport die Positionsnummer übergeben, damit dieser nur die passenden Zutaten ausliest im SubReportHandling Event. Aber durch FIRST(x) wird eben immer nur die Erste Positionsnummer übergeben, nicht die aktuell behandelte...

Hier die "grafische" Problembeschreibung:

1
1-1 Subreportaufruf mit Position 1
1-2
2
2-1 Subreportaufruf mit Position 2 (leider wird zurzeit immer 1 übergeben)
2-2
3
3-1 Subreportaufruf mit Position 3 (leider wird zurzeit immer 1 übergeben)
3-2
3-3

11.11.2011 - 01:02 Uhr

Also das mit den Subreports klappt sehr gut, nur eine Kleinigkeit hintert mich noch das Formular abzuschließen. Ich übergebe einen Parameter (Bestell-Position) an das SubReport-Control mit diesem Ausdruck:

=First(Fields!Ord_Pos.Value, "dsOrderPos")

Mir ist klar, dass First der falsche Ausdruck ist, aber welchen muss ich verwenden um die aktuelle Ord_Pos als Value an den SubReport zu übergeben?

thx

18.10.2011 - 18:43 Uhr

Hallo,
ich bin grad dabei einen Report zu erstellen, der Bestellungen ausdruckt, d.h. es werden Bestellpositionen ausgegeben
1
2
3

Allerdings, sollen zu jeder Position die zugehörigen Zutaten darunter ausgegeben werden (kommen aus gesonderter Tabelle mit Verweis auf die entsprechende Position).
1
#1
#2
2
#1
#2
#3
3
#1

Ich habe die Positionen jetzt in einer Tabelle ausgegeben. Wie kann ich es darstellen, dass unter jede Position noch die Zutaten (falls vorhanden) direkt darunter ausgedruckt werden? thx

16.10.2011 - 12:05 Uhr

Also ich habe nochmal den Quellcode abgesucht, im Quellcode ist tatsächlich alles korrekt....


        public BestellDBDataSet.OrderDataTable dtOrder = new BestellDBDataSet.OrderDataTable();
        public BestellDBDataSetTableAdapters.OrderTableAdapter OrderAdapter = new BestellDBDataSetTableAdapters.OrderTableAdapter();


            OrderAdapter.Fill(dtOrder);


            dgvOrderList.DataSource = Data.dtOrder;

Aber in meinem typisierten DataSet war tatsächlich im OrderTableAdapter ein falsches SQL Query, dort war überall ein "AS Expr 1" ... " AS Expr n" nach den sekeltierten Spaltennamen angehänt, das habe ich jetzt bereinigt und es funtkioniert jetzt wie gewünscht mit der Anzeige!

Danke für den Hinweise!

15.10.2011 - 23:47 Uhr

Wenn ich meine Daten von der Datenbank über die DataTable an die DataGridView gebunden habe, werden die Spalten einmal in korrekter Reihenfolge angezeigt mit den Daten und anschließend direkt nochmal, diesmal allerdings mit den SpaltenNamen (Expr 1 ... Expr n).

Ich hab keine großen Besonderheiten im Quellcode, die dafür sorgen könnten (soweit ich das beurteilen kann), deshalb wollte ich mal fragen, was da schief laufen könnte, dass die Tabelle nicht nur einmal angezeigt wird?

DataGridViewColumns habe ich nicht manuell per Designer oder programmtechnisch gebunden!

thx

08.10.2011 - 17:21 Uhr

Was muss ich denn zusätzlich machen um serialsierte Lists im Designer ändern zu können? Gibt es da evtl. ein Tutorial? thx

07.10.2011 - 14:05 Uhr

Ok danke, ich versuche es mal...

07.10.2011 - 13:50 Uhr

Ok gut, das klingt plausibel,
wie kann ich denn einen Loop über alle Controls einer Form machen? Denn nur ein Loop über Controls der Form, deckt ja leider nicht sämtliche Unter-Controls ab... thx

05.10.2011 - 16:45 Uhr

Beide Ideen haben sind für mich denkbar, ich bin jetzt auf der Suche, nach der schnelleren bzw. GUI-freundlicheren Lösung.

Allerdings finde ich es relativ umständlich, alle Controls zu loopen, um sie an ein ENTER Event zu binden und bei Schließen der Bestellung nochmal alle "abzumelden" vom EventHandler. Ist das performance-technisch, nicht extrem aufwendig bei 50-100 Controls und mehr auf der Form?
Allerdings wäre es genau das, was ich mir vorstelle vom verstecken der GridView bei Verlassen der Artikel-Nr.-Textbox bzw. der GridView in ein anderes Control.

Zur letzten Lösung, es als einzelnen Prozess zu betrachten, halte ich auch viel, allerdings würde, wenn der Fokus bspw. auf der Anzahl der Artikel steht, die GridView auch angezeigt werden, obwohl die Artikelanzahl ja nicht direkt mit der Artikelnummer verknüpft ist.
Das würde allerdings das aufwendige EventHandling umgehen...

Eine Alternative, welche beide Vorzüge verbindet gibt es sonst nicht mehr, oder hat jemand noch eine Idee?

thx

01.10.2011 - 11:58 Uhr

Hallo,

ich habe eine TextBox für Eingabe von ArtikelNummern, dabei wird zusätzlich eine DataGridview angezeigt, welche alle möglichen Artikelnummern anzeigt direkt unter der Eingabe-Textbox.

Im Leave Event der Textbox wird die DataGridview auf Visible false gesetzt, da sie nur angezeigt werden soll, wenn der Fokus auf der Textbox liegt.

Allerdings soll es möglich sein, in die Datagridview klicken zu können, damit man dort per Maus die Artikel per Doppelklick selektieren kann.

Doch durch das Leave Event mit dem unsichtbar setzen der Datagridview, wird diese bei anklicken eben direkt unsichtbar, da die Textbox den Fokus verloren hat.

Hat jemand eine Idee, wie ich im Leave Event herausfinden kann, welches Control ab sofort fokussiert wird (dann könnte ich nach der Datagridview abfragen und diese dann eben nicht unsichtbar werden lassen...)

Oder gibt es andere Ansätze für mein Problem?

Ich hoffe die Thematik ist in diesen paar Zeilen nachzuvollziehen, ich habe mal zum besseren Verständnis einen Screenshot angehängt!

Danke!

19.09.2011 - 16:18 Uhr

Hallo,
ich habe in VS 2010 Express eine abgeleitete Textbox Klasse geschrieben, welche das KeyPress Event behandelt.

Von dieser habe ich eine weitere Ausprägung abgeleitet, welche ebenfalls das KeyPress Event behandeln soll.
Wenn bspw. ENTER gedrückt wird, soll ein eigenes Event ausgelöst werden:

                case '\r':
                    {
                        EventHandler newEvent = OnNewArticleLine;
                        if (newEvent != null)
                            newEvent(this, null);
                        break;
                    }

Leider ist dieser Eventhandler newEvent immer mit NULL gefüllt, weshalb die Event-auslösende Methode nicht mehr aufgerufen wird.

Kann mir jemand einen tipp geben, wie ich da die Theads so kontrollieren kann bzw. was das Prblem sein könnteß! thx

11.12.2010 - 15:09 Uhr

Hallo, nachdem ich ein Update durchgeführt habe für diese Anwendung kann ich die Software nicht mehr starten (Windows 7):


Fehlerprotokoll:

Fehlerbucket , Typ 0
Ereignisname: CLR20r3
Antwort: Nicht verfügbar
CAB-Datei-ID: 0

Problemsignatur:
P1: updatesystemdotnet.designer.exe
P2: 1.1.80.1128
P3: 4cf2871d
P4: updateSystemDotNet.Designer
P5: 1.1.80.1128
P6: 4cf2871d
P7: 267
P8: 49
P9: System.IO.FileLoadException
P10: 

Angefügte Dateien:
C:\Users\Andy\AppData\Local\Temp\WER512D.tmp.WERInternalMetadata.xml

Diese Dateien befinden sich möglicherweise hier:
C:\Users\Andy\AppData\Local\Microsoft\Windows\WER\ReportArchive\AppCrash_updatesystemdotn_192d60f455574b74268868f6809ae33b91f8b26b_0e296c7a

Analysesymbol: 
Es wird erneut nach einer Lösung gesucht: 0
Berichts-ID: 14e8467d-0530-11e0-9e3c-001c25e36d67
Berichtstatus: 1

Was kann da schief gelaufen sein? Danke!

28.11.2010 - 14:29 Uhr

Ich habe in den Settings den DBConnectionString und kann ihn nicht auf User Level einstellen, es ist fix im Bereich der Anwendung (Data Source=C:\DB.sdf;Password=xxx)

Ich muss doch aber diese Variable anpassen, damit er nicht immer die DB in C: vermutet oder?

Wie kann ich das ändern?

27.11.2010 - 13:47 Uhr

Ich will den Datenbank Pfad flexibel halten und vom Benutzer ändern lassen können. Entwickelt habe ich über typisierte Datasets und DataAdapter.

Die beste Lösung wäre den Datenbank Pfad auf andere Art und Weise zu ändern, geht das eventuell?

26.11.2010 - 18:48 Uhr

Hallo,

ich habe ein Problem, dass ich meine Anwendung auf einem Win7 PC nicht starten kann wegen folgender Fehlermeldung (siehe Anhang)

Kann es etwas damit zu tun haben?

            cData.ModifyConnectionString(@"Data Source=" + Properties.Settings.Default.DBDataSource +
                 ";Persist Security Info=True;Password=" + Properties.Settings.Default.DBPassword + ";");
        public static void ModifyConnectionString(string connectionString)
        {
            System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            config.ConnectionStrings.ConnectionStrings ["xxx.Properties.Settings.xxxDBConnectionString"].ConnectionString = connectionString;
            config.Save(ConfigurationSaveMode.Modified);
            ConfigurationManager.RefreshSection (config.ConnectionStrings.SectionInformation.Name);
            Properties.Settings.Default.Reload();
        }

Hat jemand Lösungsansätze?

Vielen Dank!

18.11.2010 - 21:06 Uhr

Ja aber ich weiß trotzdem nicht was ich machen soll, habe eine Anleitung für eine Sandbox gefunden, aber ist das wirklich die Lösung des Problems? Ich bin gerade Remote auf dem Kundenrechner, aber später soll ja alles lokal gestartet werden.

Ist das also ein Remote Problem oder allgemein ein Berechtigungsproblem?

18.11.2010 - 20:24 Uhr

Nachdem ich alles ordentlich gecatcht habe (Try-Catch) kommt noch folgende Fehlermeldung:

Die Datei oder Assembly "System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" oder eine Abhängigkeit davon wurde nicht gefunden. Die minimale Berechtigung konnte nicht erteilt werden. (Ausnahme von HRESULT: 0x80131417)
bei PizzaCall.Class.cDBUpdater.UpdateDatabase()

bei PizzaCall.frmPizzaCall..ctor()

Allerdings ist diese DLL sicher im Verzeichnis, hat von euch jemand eine Idee woran das liegen könnte? thx

10.11.2010 - 20:18 Uhr

Also ich habe es jetzt mal mit x86 versucht, leider erfolglos.
Aber ich habe das Fehlerprotokoll ausgelesen, falls jemand etwas damit anfangen kann:

Protokollname: Application
Quelle: Application Error
Datum: 10.11.2010 20:04:51
Ereignis-ID: 1000
Aufgabenkategorie:(100)
Ebene: Fehler
Schlüsselwörter:Klassisch
Benutzer: Nicht zutreffend
Computer: Idahou
Beschreibung:
Name der fehlerhaften Anwendung: Application.exe, Version: 1.0.3.0, Zeitstempel: 0x4cdaecb3
Name des fehlerhaften Moduls: KERNELBASE.dll, Version: 6.1.7600.16385, Zeitstempel: 0x4a5bdbdf
Ausnahmecode: 0xe0434f4d
Fehleroffset: 0x0000b727
ID des fehlerhaften Prozesses: 0x%9
Startzeit der fehlerhaften Anwendung: 0x%10
Pfad der fehlerhaften Anwendung: %11
Pfad des fehlerhaften Moduls: %12
Berichtskennung: %13
Ereignis-XML:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Application Error" />
<EventID Qualifiers="0">1000</EventID>
<Level>2</Level>
<Task>100</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2010-11-10T19:04:51.000000000Z" />
<EventRecordID>114780</EventRecordID>
<Channel>Application</Channel>
<Computer>I920.kaikaito.local</Computer>
<Security />
</System>
<EventData>
<Data>Application.exe</Data>
<Data>1.0.3.0</Data>
<Data>4cdaecb3</Data>
<Data>KERNELBASE.dll</Data>
<Data>6.1.7600.16385</Data>
<Data>4a5bdbdf</Data>
<Data>e0434f4d</Data>
<Data>0000b727</Data>
</EventData>
</Event>