Laden...

Profil von tomylee

myCSharp.de - Member Mitglied seit

Alle Beiträge

Heyyy, das ist ja viel einfacher 😉

Gruß

Hallo,

weil es ein einfacher Weg ist um schnell auf die DB zu gelangen und Daten zu prüfen oder manuelle Erweiterungen/Änderungen zu tätigen.
Momentan muss ich immer über SQL Server Management Studio gehen und dann per query.
Wie machst du das?

Gruß

Hallo,

ich würde gern mit dem Server Explorer auf eine SQLCE Datenbank zugreifen, aber leider ist dies Standardmäßig nicht integriert in dem Addin. Hat jemand Ahnung wie man das "nachrüstet"?

Gruß tomylee

24.09.2009 - 09:31 Uhr

Hallo herbivore,

man kann ja auch einen für VS machen. Meine persönliche Meinung ist, das man so etwas nicht unbedingt so von der Postinganzahl abhängig machen sollte, sondern einfach der Übersicht wegen, Macht auch einen kompletteren Eindruck wenn vom Start ab gleich Unterforen zu sehen sind für verschiedenen Entwicklungsebenen. Aber das ist meine persönliche Meinung.

Gruß tomylee

23.09.2009 - 11:55 Uhr

Hallo,

ein Vorteil wäre das es nur 1/4 an Speicherplatz gegenüber VS benötigt. Man spart nur 150MB aber immerhin.

Dann scheint auch der Server-Explorer zu funktionieren. Wenn man Daten direkt ändern kann, ein großer Vorteil gegenüber VS.
Leider habe ich noch keinen Weg gefunden wie ich auf eine SQLCE DB zugreifen kann. Vielleicht hat ja jemand eine Antwort, das wäre cool.

tomylee

Edit: Vielleicht kann man ja mal einen Bereich für SharpDevelop einrichten.

23.07.2009 - 11:54 Uhr

Oh neiiiiiiiiin...... 8o

Das kann wo nicht wahr sein. Wer erfindet denn so einen Misst 👶

Vielen Dank Fremder 😃

Gruß tomylee

21.07.2009 - 19:32 Uhr

Hallo,

ich lese mit einem Reader aus einer SQL DB Daten aus und die X Axe bekommt ihre von einer DateTime Spalte.

x = (double) new XDate(Convert.ToDateTime(reader["Date"]));

Alles passt soweit aber egal wie ich es dreh, im Chart steht z.B. 29.00.2009
Auch über mehrere Monate bleibt da immer die 00 stehen.

Kann nicht verstehen warum und wo der Fehler ist, er erkennt ja sonnst alles wunderbar.

Danke und Gruß tomylee

16.07.2009 - 21:57 Uhr

Hallo Florian,

wenn ich Balabans post richtig verstehe dann macht man das durch +Environment.NewLine und die ; am statement Ende. Das habe ich aber trotzdem Fehler.

Naja, ich feure nen eigenes query und gut

Danke und Abendgruß

16.07.2009 - 16:02 Uhr

Danke,

glaub mir das habe ich getan, aber das ist mir nicht über den Weg gelaufen.

Aber Problem ist noch nicht ganz weg.
Feure ich den query direkt im Server Manager, dann funktioniert er. Mach ich es im Code dann kommt wieder der SELECT Fehler.

Teilweise wird gesagt das mehrere statements nicht gehen bei CE 3.5 und andere sagen es geht.
Und auf der anderen Seite müsste er ja auch ein Problem im Manager haben.

Bin gespannt wo diesmal mein Denkfehler ist.

Gruß

16.07.2009 - 13:54 Uhr

Hallo zusammen,

muss jetzt doch mal hier schreiben. Finde nicht den Fehler.

Ich bekomme folgende Exception:

System.Data.SqlServerCe.SqlCeException: Fehler beim Analysieren der Abfrage. [ Token line number = 1,Token line offset = 255,Token in error = SELECT ]

string queryStockData = "INSERT INTO "+AccountName+"_StockData (StockSymbol, StockName, StockQuantity,"
											+ "ShortLong, IndexListing, Sector, Country, Instrument, StockStatus)"
								+ "VALUES (@StockSymbol, @StockName, @StockQuantity, @ShortLong, @IndexListing,"
											+ "@Sector, @Country, @Instrument, @StockStatus); "
								+ "SELECT (scope_identity() AS int)";


SqlCeConnection conn = new SqlCeConnection("DataSource = 'TradingJournal.sdf'");
			conn.Open();
			SqlCeCommand cmd_AccountBalance = new SqlCeCommand(queryNewAccountBalance, conn);

SqlCeCommand cmd_StockData = new SqlCeCommand(queryStockData, conn);
			cmd_StockData.Parameters.Add("@StockSymbol", SqlDbType.NText).Value = this.txt_stockSymbol.Text;
			cmd_StockData.Parameters.Add("@StockName", SqlDbType.NText).Value = this.txt_stockName.Text;
			cmd_StockData.Parameters.Add("@StockQuantity", SqlDbType.Int).Value = this.txt_stockQuantity.Text;
			cmd_StockData.Parameters.Add("@ShortLong", SqlDbType.NText).Value = longshort;
			cmd_StockData.Parameters.Add("@IndexListing", SqlDbType.NText).Value = this.cb_index.Text;
			cmd_StockData.Parameters.Add("@Sector", SqlDbType.NText).Value = this.cb_sector.Text;
			cmd_StockData.Parameters.Add("@Country", SqlDbType.NText).Value = this.cb_country.Text;
			cmd_StockData.Parameters.Add("@Instrument", SqlDbType.NText).Value = this.cb_instrument.Text;
			cmd_StockData.Parameters.Add("@StockStatus", SqlDbType.NText).Value = "open";

Int32 newID = (Int32)cmd_StockData.ExecuteScalar();

Wo ist jetzt der Fehler im SELECT ?

Vielen Dank für die Hilfe
tomylee

Hi,

vielleicht gibt es ja einen Befehl der wen ich etwas in die Master eintrage und in die Neben, das er dann automatisch die ID von der Master nimmt. Wenn ich die Neben mit IDENTITY definiere macht er das ja so.

Gruß

Hi,

jetzt ist aber doof das ich in den Nebentabellen immer die ID manuell zuweisen muss und der nicht automatisch die von der Master nimmt. Oder mache ich was falsch, bzw. habe etwas übersehen?

Gruß tomylee

Die werden schon automatisch eingetragen.

Egal, ich werde es wie du gesagt hast umstellen und dann sollte es ja sauber funktionieren 😃

CREATE TABLE "+ accountName +"_StockData TradeID integer PRIMARY KEY

CREATE TABLE "+ accountName +"_EntryData(TradeID integer IDENTITY CONSTRAINT PK_TradeID PRIMARY KEY REFERENCES "+ accountName +"_StockData(TradeID) ON DELETE CASCADE

OK. Danke.
Dann werde ich es so machen.

Das was du beschreibst ist bei mir nicht aufgetreten. Die IDs sind richtig zugeordnet. 1 zu 1 und 3 zu 3.

Ist jetzt nur eine Vermutung, aber kann es sein dass du versehentlich in deiner Child-Tabelle deine ID-Spalte auch als IDENTITY definiert hat? Wenn ja, dann schmeiß die raus und mach' eine normale INT-Spalte.

Jo habe ich gemacht. Macht das aber nicht Sinn diese auch als IDENTITY zu definieren damit es nix doppeltes gibt?

Hi,

richtig. Nur dann folgendes Problem:

Tabelle 1
1 - blabla
2 - blabla
3 - blabla

Tabelle 2
1 - blabla
3 - blabla

Nun kann würde in Tabelle 2 die Zeile 2 erst später gefüllt werden. Das scheint aber nicht zu gehen.

Gruß
tomylee

verwendetes Datenbanksystem: SQLCe

Hallo,

ich habe eine DB mit mehreren Tabellen. In jede Tabelle steht ein Teil des Datensatzes. Es kann nicht vorkommen das in einer Tabelle mehrere Datensätze der Mastertabelle zugeordnet sind.

Es ist nur so das beim erstellen eines Datensatzes, nicht sofort in alle Childtabellen etwas eingefügt wird. Dann kann es sein das z.B. erst in diese mit der ID 5 etwas eingetragen wird und später ID 4.

Und da kommt das Problem. ID 4 kann man nicht mehr einfügen.
Jetzt die Frage. Muss ich beim eintragen in die Master auch in alle anderen Tabellen z.B. NULL eintragen und dann ein update machen? Wenn ja, gibt es da einen Befehl der mir Code spart? Oder gibt es eine Möglichkeit nacher eine Zeile ein zu fügen?

Danke und Gruß
tomylee

28.06.2009 - 22:05 Uhr

Hi,

vielen Dank für die schnelle Antwort.

Auch danke für den Tipp, werde den link mal durcharbeiten und mein prog anpassen.

Gruß

28.06.2009 - 21:34 Uhr

verwendetes Datenbanksystem: SQL CE

Hallo zusammen,

eine Frage wo ich mir schon fast sicher bin wie die Antwort ist 😉 aber trotzdem:

Ich mache eine Datenbankabfrage für ein DataGridView mit verschiedenen Variablen die sich ändern. Bei der einen Abfrage soll die letzte AND Bedingung nicht beachtet werden. Das schönste wäre jetzt ein Wert den man der Variable shortlong mitgeben kann das alle Zeilen beachtet werden. So etwas wie SELECT *.

+"AND "+selectedAccount+"_StockData.StockStatus LIKE '"+openClosed+"' "
+"AND "+selectedAccount+"_StockData.ShortLong LIKE '"+shortLong+"'";

Gibt es da zufällig etwas oder muss ich den umweg über ein neues query gehen?

Danke
Thomas

25.06.2009 - 11:14 Uhr

Hi,

hast du die Version "with Tools" installiert?

Gruß

25.06.2009 - 10:23 Uhr

Hallo,

Ich würde auch gern Tabellennamen ändern, löschen usw. ohne es über ein query zu machen. Geht das mit der Express Version oder muss man da eine höhere Verwenden?

Gruß Thomas

04.12.2007 - 13:42 Uhr

Was hast du genau für eine Version installairt?
Ich habe gerade bei Microsoft gesehen das es auch eine Express Advanced Version gibt.

tomylee

04.12.2007 - 10:09 Uhr

irgendwie habe ich viel weniger auswahl

den abfrage-designer habe ich auch nicht in der liste oben drin

03.12.2007 - 22:14 Uhr

Hi,

dann habe ich aber nur die definition der einzelnen Spalten aber nicht den Inhalt, wenn schon Daten in der Tabelle sind.

Gruß

03.12.2007 - 20:39 Uhr

Nachdem ich den SQL Server noch mal neu installiert habe, erscheint die Auswahl am Anfang. Da hat wo was nicht richtig funtioniert.

Gibt es denn die Möglichkeit mit dem Management Studio auch in die Daten ein zusehen?

tomylee

16.11.2007 - 21:15 Uhr

Wenn man eine Tabelle löscht muss man dann erst die CASCADE per eigenes query löschen oder gibt es da eine möglichkeit in einem query das zu machen?
Google hat mich bis jetzt da nicht weiter gebracht.

gruß tomylee

11.11.2007 - 11:21 Uhr

http://de.wikipedia.org/wiki/Ado.net da hast du schon mal Grundlegende informationen
ansonsten solltest du dir ein Buch besorgen um dich in das Thema ein zu arbeiten
z.b. das hier http://www.amazon.de/Visual-C-2005-Grundlagen-Programmiertechniken/dp/382732288X/ref=pd_bbs_sr_1/028-2842868-1722948?ie=UTF8&s=books&qid=1194776241&sr=8-1

da hast du die Grundlegenden Dinge mit drin

10.11.2007 - 20:16 Uhr

Habe ich installiert aber immer wenn ich eine sdf Datei öffnen will dann kann er mit dem Dateityp nix anfangen.

da musst den server installieren
willst das nicht dann mußt eine embedded DB nehmen wie z.B. SQL Compact

Um programmiertechnisch zuzugreifen oder um an die Daten zu kommen?

10.11.2007 - 18:02 Uhr

Original von BerndFfm
Und ich empfehle auch SQL Server Compact.

Wie schnell der im Verhältnis zu SLQLite ist weiss ich allerdings nicht.

Die Administrierung erfolgt sehr komfortabel über SQL Management Studio Express.

Siehe auch


>

Grüße Bernd

Ich habe Probleme eine Compact DB mit dem Manager zu starten, brauch man da noch einen Treiber oder so? Kann nichts finden im Netz.

Gruß

07.11.2007 - 17:10 Uhr

verwendetes Datenbanksystem: SqlCe

Hallo,

ich bin gerade dabei meine Anwendung auf Sql-Compact umzustellen. Alles in allem ist ja alles mehr oder weniger das gleiche außer bei der Klasse SqlCeType. In SqlDbType gibt es alle Typen wie char, int32,...... aber in SqlCeType nix.

Wie funktioniert das denn da dann?
Hier noch ein Bsp.:

		private void AddParams(System.Data.SqlClient.SqlCommand cmd, params string[] cols)
		{
			//Adding Hectic parameters in SqlCe Commands
			foreach(string col in cols)
			{
				cmd.Parameters.Add("@" + col, SqlDbType.Char, 0, col);
			}
		}

Gruß tomylee

28.06.2007 - 23:56 Uhr

Wenn dich iese Anwendung
jedoch auf dem Pocket-PC ausführe, dann habe ich nach jedem Wechsel der GUI (z.B. wenn ich
auf den Button "Write-Tag" klicke) ein neues Fenster (bzw. Task)... ich müsste diese
bestimmt auch irgendwie unsichtbar machen könne...

Da jedesmal wenn du auf den Buttun klickst wieder eine neue Forminstanz aufgerufen wird. Du mußt erst prüfen ob sie schon auf ist. Ich habe das so gelöst.

void Btn_Watchlist(object sender, EventArgs e)
		{
			this.Cursor = Cursors.WaitCursor;			
			try
			{
				Application.OpenForms["Watchlist"].Focus();
			}
			catch
			{
				Watchlist frm_Watch = new Watchlist();
				frm_Watch.Show();
			}
			this.Cursor = Cursors.Default;
		}
28.06.2007 - 15:13 Uhr

oh man, dieses dumme Komma war es auch noch 8o

Vielen Dank, nun geht es 👍

28.06.2007 - 13:53 Uhr

@FZelle,

wie gesagt ist das ein Bsp. aus einem Buch um das arbeiten mit ADO.net zu lernen und die haben nun mal alles als char genommen. Dies sollte ja aber nicht das Problem sein warum es den Syntaxfehler gibt, welcher immer noch da ist obwohl der Code wie oben ist.

Ich habe mal das SharpDevelop Projekt als Anhang beigefügt. Vielleicht ist das besser.

28.06.2007 - 13:16 Uhr

Das obere Problem ist schon gelöst 😉
Und bei mir sind sie am Schluß 🙂

28.06.2007 - 12:29 Uhr

Sorry das war mein Fehler, habe nur das Falsche kopiert aber schon bei Update immer geschaut.

Es sind alle Parameter drin und in der richtigen Reihenfolge:

//Preparing Update Command
			dataAdapter.UpdateCommand = conn.CreateCommand();
			dataAdapter.UpdateCommand.CommandText = "UPDATE article SET " +
													"title = @title, " +
													"topic = @topic, " +
													"authorID = @authorID,"+
													"authorName = @authorName,"+
													"lines = @lines, " +
													"dateOfPublishing = @dateOfPublishing,"+
													"WHERE artID = @artID";
				AddParams(dataAdapter.UpdateCommand, "title", "topic", "authorID", "authorName", "lines", "dateOfPublishing", "artID");
				
27.06.2007 - 22:33 Uhr

Hallo FZelle,

ich bin noch nicht 100% fit in dem Thema DB und der Code hier ist aus einem Buch. Dumm das er nicht richtig funktioniert, damit lässt sich schlecht lernen.

Beim OleDbCommand werden im SQLString die Parameter normalerweise nur
als "?" eingetragen, weshalb die Parameterauflistung auch zwingend in der
gleichen reihenfolge befüllt sein muss, wie die Parameter in der Collection auftauchen.
Ausserdem solltest Du dringend nochmal den Sql-String beim UpdateCommand
durchsehen, da hast Du einen dieser Parameter falsch angegeben.

Du meinst artID das es am Ende stehen soll? Das habe ich gemacht aber das Problem ist weiterhin.

Auch solltest Du die Parameter erst nach dem SqlString befüllen, es gibt
andere ADO.NET Provider, die sonst mit einer Exception aussteigen.

Wenn ich es richtig verstehe dann ist der SqlString:

//Preparing Update Command
			dataAdapter.UpdateCommand = conn.CreateCommand();
			dataAdapter.UpdateCommand.CommandText = "UPDATE article SET " +
													"title = @title, " +
													"topic = @topic, " +
													"authorID = @authorID,"+
													"authorName = @authorName,"+
													"lines = @lines, " +
													"dateOfPublishing = @dateOfPublishing,"+
													"WHERE artID = @artID";
				

Und das die Parameter:

AddParams(dataAdapter.UpdateCommand, "title", "topic", "authorID", "authorName", "lines", "dateOfPublishing", "artID");
				

Dann passt es doch mit der Reihenfolge.

Edit: Richtigen code eingefügt.

26.06.2007 - 23:43 Uhr

Hi Daniel,

danke für die Antwort aber leider bringt es nix.

Gruß
Thomas

26.06.2007 - 21:17 Uhr

Hallo,

ich habe aus einem Buch zum Thema OleDb Connection ein Programm ausprobiert. Es geht alles soweit aber bei UPDATE kommt ein Syntaxfehler. Nun habe ich das ganze in mein Programm eingebaut und wieder das selbe. Was ich im Netz gefunden hat passt soweit alles mit dem überein was ich habe.

Hier das Fehlerprotokoll:

System.Transactions Critical: 0 : <TraceRecord xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Critical"><TraceIdentifier>
>
</TraceIdentifier><Description>Unhandled exception</Description><AppDomain>MDB-DB_Test1.exe</AppDomain><Exception><ExceptionType>System.Data.OleDb.OleDbException, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</ExceptionType><Message>Syntaxfehler in UPDATE-Anweisung.</Message><StackTrace> 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 MDB_DB_Test1.MainForm.BtnSaveClick(Object sender, EventArgs e) in c:\Dokumente und Einstellungen\xxx\Eigene Dateien\SharpDevelop Projects\MDB-DB_Test1\MainForm.cs:line 175
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message&amp;amp; m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message&amp;amp; m)
at System.Windows.Forms.ButtonBase.WndProc(Message&amp;amp; m)
at System.Windows.Forms.Button.WndProc(Message&amp;amp; m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&amp;amp; m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&amp;amp; m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG&amp;amp; msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at MDB_DB_Test1.MainForm.Main(String[] args) in c:\Dokumente und Einstellungen\xxx\Eigene Dateien\SharpDevelop Projects\MDB-DB_Test1\MainForm.cs:line 36</StackTrace><ExceptionString>System.Data.OleDb.OleDbException: Syntaxfehler in UPDATE-Anweisung.
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 MDB_DB_Test1.MainForm.BtnSaveClick(Object sender, EventArgs e) in c:\Dokumente und Einstellungen\xxx\Eigene Dateien\SharpDevelop Projects\MDB-DB_Test1\MainForm.cs:line 175
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message&amp;amp; m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message&amp;amp; m)
at System.Windows.Forms.ButtonBase.WndProc(Message&amp;amp; m)
at System.Windows.Forms.Button.WndProc(Message&amp;amp; m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&amp;amp; m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&amp;amp; m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG&amp;amp; msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at MDB_DB_Test1.MainForm.Main(String[] args) in c:\Dokumente und Einstellungen\Thomas Mann\Eigene Dateien\SharpDevelop Projects\MDB-DB_Test1\MainForm.cs:line 36</ExceptionString></Exception></TraceRecord>

Hier der Code von dem Bsp. aus dem Buch:

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.Data;
using System.Data.OleDb;

namespace MDB_DB_Test1
{
	/// <summary>
	/// Description of MainForm.
	/// </summary>
	public partial class MainForm : Form
	{
		private OleDbConnection conn;
		private OleDbDataAdapter dataAdapter;
		private DataTable dataTable;
		private DataSet ds;
		private int currRec = 0;
		private int totalRec = 0;
		private bool insertSelected;
		
		[STAThread]
		public static void Main(string[] args)
		{
			Application.EnableVisualStyles();
			Application.SetCompatibleTextRenderingDefault(false);
			Application.Run(new MainForm());
		}
		
		public MainForm()
		{
			//
			// The InitializeComponent() call is required for 
			// Windows Forms designer support.
			InitializeComponent();
			
			//
			// TODO: Add constructor code after the 
			//		 InitializeComponent() call.
		}
				
		private void BtnLoadTableClick(object sender, EventArgs e)
		{
			this.Cursor = Cursors.WaitCursor;
			
			string connectionString = "provider=Microsoft.Jet.OLEDB.4.0;"+
								"data source = C:\\programmersheaven.mdb";
			
			conn = new OleDbConnection(connectionString);
			string commandString = 	"SElECT * from article";
			dataAdapter = new OleDbDataAdapter(commandString, conn);
			InitializeCommands();
			ds = new DataSet();
			dataAdapter.Fill(ds, "article");
			
			dataTable = ds.Tables["article"];
			currRec = 0;
			totalRec = dataTable.Rows.Count;
				
			FillControls();
			ToggleControls(true);
			
			this.Cursor = Cursors.Default;
		}
		
		private void FillControls()
		{
			txtArticleID.Text = dataTable.Rows[currRec]["artID"].ToString();
			txtArticleTitle.Text = dataTable.Rows[currRec]["title"].ToString();
			txtArticleTopic.Text = dataTable.Rows[currRec]["topic"].ToString();
			txtAuthorID.Text = dataTable.Rows[currRec]["authorID"].ToString();
			txtAuthorName.Text = dataTable.Rows[currRec]["authorName"].ToString();
			txtNumOfLines.Text = dataTable.Rows[currRec]["lines"].ToString();
			txtDateOfPublishing.Text = dataTable.Rows[currRec]["dateOfPublishing"].ToString();
		}
		
		private void InitializeCommands()
		{			
			//Preparing Select Command
			dataAdapter.SelectCommand = conn.CreateCommand();
			dataAdapter.SelectCommand.CommandText = 
				"SELECT * FROM article";
			
			//Preparing Insert Command
			dataAdapter.InsertCommand = conn.CreateCommand();
			dataAdapter.InsertCommand.CommandText = 
				"INSERT INTO article(artID, title, topic, authorID, authorName, lines, dateOfPublishing)"+
				"VALUES(@artID, @title, @topic, @authorID, @authorName, @lines, @dateOfPublishing)";
				AddParams(dataAdapter.InsertCommand, "artID", "title", "topic", "authorID", "authorName", "lines", "dateOfPublishing");
			
			//Preparing Update Command
			dataAdapter.UpdateCommand = conn.CreateCommand();
			dataAdapter.UpdateCommand.CommandText = "UPDATE article SET " +
													"title = @title, " +
													"topic = @topic, " +
													"authorID = @authorID,"+
													"authorName = @authorName,"+
													"lines = @lines, " +
													"dateOfPublishing = @dateOfPublishing,"+
													"WHERE artID = @artID";
				AddParams(dataAdapter.UpdateCommand, "title", "topic", "authorID", "authorName", "lines", "dateOfPublishing", "artID");
				
			//Preparing Delete Command	
			dataAdapter.DeleteCommand = conn.CreateCommand();
			dataAdapter.DeleteCommand.CommandText = "DELETE FROM article WHERE artID = @artID";
			AddParams(dataAdapter.DeleteCommand, "artID");
		}
		
		private void AddParams(OleDbCommand commandString, params string[] cols)
		{
			//Adding Hectice parameters in OleDb Commands
			foreach(string col in cols)
			{
				commandString.Parameters.Add("@" + col, OleDbType.Char, 0, col);
			}
		}
		
		private void ToggleControls(bool val)
		{
			txtArticleTitle.ReadOnly = val;
			txtArticleTopic.ReadOnly = val;
			txtAuthorID.ReadOnly = val;
			txtNumOfLines.ReadOnly = val;
			txtDateOfPublishing.ReadOnly = val;
			
			btnLoadTable.Enabled = val;
			btnNext.Enabled = val;
			btnPrevious.Enabled = val;
			btnEditRecord.Enabled = val;
			btnDeleteRecord.Enabled = val;
			btnInsertRecord.Enabled = val;
			
			btnSave.Enabled = !val;
			btnCancel.Enabled = !val;
		}
		
		void BtnNextClick(object sender, EventArgs e)
		{
			currRec++;
			if(currRec>=totalRec)
				currRec=0;
			FillControls();
		}
		
		void BtnPreviosClick(object sender, EventArgs e)
		{
			currRec--;
			if(currRec<0)
				currRec=totalRec-1;
			FillControls();
		}
		
		void BtnEditRecordClick(object sender, EventArgs e)
		{
			ToggleControls(false);
		}
		
		void BtnSaveClick(object sender, EventArgs e)
		{
			lblLabel.Text = "Saving Changes...";
			this.Cursor = Cursors.WaitCursor;
			DataRow row = dataTable.Rows[currRec];
			row.BeginEdit();
			row["title"] = txtArticleTitle.Text;
			row["topic"] = txtArticleTopic.Text;
			row["authorID"] = txtAuthorID.Text;
			row["authorName"] = txtAuthorName.Text;
			row["lines"] = txtNumOfLines.Text;
			row["dateOfPublishing"] = txtDateOfPublishing.Text;
			row.EndEdit();
			dataAdapter.Update(ds, "article");
			ds.AcceptChanges();
			
			ToggleControls(true);
			insertSelected = false;
			this.Cursor = Cursors.Default;
			lblLabel.Text = "Changes Saved";
		}
		
		void BtnCancelClick(object sender, EventArgs e)
		{
			if(insertSelected)
			{
				BtnDeleteRecordClick(null, null);
				insertSelected = false;
			}
			
			FillControls();
			ToggleControls(true);
		}
		
		void BtnDeleteRecordClick(object sender, EventArgs e)
		{
			DialogResult res = MessageBox.Show(
								"Are you sure you want to delet the current record?",
								"Confirm Record Deletion", MessageBoxButtons.YesNo);
			if(res == DialogResult.Yes)
			{
				DataRow row = dataTable.Rows[currRec];
				row.Delete();
				dataAdapter.Update(ds, "article");
				ds.AcceptChanges();
				lblLabel.Text = "Record Deleted";
				totalRec--;
				currRec = totalRec-1;
				FillControls();
			}
		}
		
		void BtnInsertRecordClick(object sender, EventArgs e)
		{
			insertSelected = true;
			DataRow row = dataTable.NewRow();
			dataTable.Rows.Add(row);
			totalRec = dataTable.Rows.Count;
			currRec = totalRec-1;
			row["artID"] = totalRec;
			
			txtArticleID.Text = totalRec.ToString();
			txtArticleTitle.Text = "";
			txtArticleTopic.Text = "";
			txtAuthorID.Text = "";
			txtAuthorName.Text = "";
			txtNumOfLines.Text = "";
			txtDateOfPublishing.Text = DateTime.Now.Date.ToString();
			
			ToggleControls(false);
		}
	}
}

Würde mich freuen wenn mir jemand sagen könnte an was es liegt. Eine Anwendung ohne Update ist etwas dumm 😉

Vielen Dank

Edit: Ich frage lieber in nem Forum wo einem geholfen wird

void DataGrid_MouseDown(object sender, MouseEventArgs e)
{
    Point pt = new Point(e.X, e.Y);
	DataGrid.HitTestInfo hti = dgDetails.HitTest(pt);
	int dataGridRow = hti.Row;
}

in hti steht jetzt die Spalte und die Zeile
hti.Row = Verwendung Zeile
hti.Column = Verwendung Spalte

18.06.2007 - 09:57 Uhr

Hallo,

ich habe eben eine kurze Frage. Ich hatte eben heftige Probleme mit dem MouseEventHandler da wenn immer ich bei msdn gesucht habe, den Handler von Windows.Input vorgeschlagen bekommen habe. Dieser funktioniert aber nicht bzw. ich mache da etwas falsch. Mit dem von Forms. geht es jetzt ohne Probelme.
Was ist der Unterschied von den beiden und wie muß ich den Input.MouseEventHandler anders benutzen?

tomylee

18.05.2007 - 10:15 Uhr

Wie auch immer.........Danke fürs Gespräch........

17.05.2007 - 19:22 Uhr

kenne ich schon aber find ich auch nicht so hundertprozentig schön.

Was ich dazu noch nicht gefunden habe ist die Möglichkeit das wenn ich auf einen Datensatz clicke, das dieser dann in einem neuen Form geladen wird. Ich will nicht die Daten in dem Grid ändern.
Gibt es so eine Möglichkeit?

Gruß tomylee

17.05.2007 - 02:43 Uhr

Wollte mal eure Erfahrungen und Meinung wissen, was das beste ist um Daten in einer Form auszugeben.
Die Anzahl der Datensätze ist nicht immer gleich und ich möchte sie gern komplett am Rand des Fesntsers haben (ein Datensatz nach dem anderen untereinander -> es werden keine hunderte sein). Bei anclicken eines einzelnen Datensatzes soll dieser in einem anderen Fenster weiterbearbeitet werden.
Das ganze in Textboxen ausgeben ist etwas blöd da die Anzahl nicht immer gleich ist oder ich muß in der Laufzeit die Textboxen erstellen. Das selbe mit einem Label.

Habt ihr vielleicht noch eine Idee wie es unkomliziert zu machen ist?

Gruß tomylee

Kann derjenige doch machen, PM an den Antwortstelle, wie seine PayPal Adresse ist 😉

Manchmal verstehe ich garnicht über was Leute überhaupt diskussieren, es scheint eine enorme Langeweile in diesem Land zu geben.

Naja, es gibt ja auch BigBrother.

Das ist ja eine komische Diskussion 🤔
Irgendwie tut Ihr so als wäre es ein monatlicher Pflichtbeitrag und/oder es geht hier um Millionen an Spendenbeiträgen 😁

Also ich sehe es mal so, warum richtet Ihr nicht einfach ein PayPal Konto ein und wenn jemand Euch etwas Geld zukommen lassen möchte, aus welchen Grund auch immer, dann kann derjenige das tun.

Thread closed 👅