Korrekt overload af datetime fra dataset til database?
Problemet er at jeg har en simpel access database med feltet Tidspunkt af typen dato og klokkeslæt. I mit datagrid kan se at datetime henter dato og tid korrekt til mit dateset, men når overloader/inserter/uploader datesettet til databasen, bliver tiden ikke taget med, hvordan gør jeg det?(Der er også et felt i databasen der hedder temp(int), men det fungere udemærket)
En detaljeret beskrivelse udbedes!
Koden ser således ud:
// Brug DBTimeStamp til parametre og ikke DBDate
// this.oleDbInsertCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Tidspunkt", System.Data.OleDb.OleDbType.DBTimeStamp, 0, "Tidspunkt"));
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace New_DB
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Data.OleDb.OleDbConnection oleDbConnection1;
private System.Windows.Forms.DataGrid dataGrid1;
private System.Data.OleDb.OleDbDataAdapter oleDbDataAdapter1;
private System.Windows.Forms.Button btnDelete;
private System.Windows.Forms.Button btnUpdate;
private System.Windows.Forms.Button btnAddRow;
private System.Windows.Forms.Button btnLoad;
private New_DB.DataSet1 dataSet1;
private System.Data.OleDb.OleDbCommand oleDbSelectCommand1;
private System.Data.OleDb.OleDbCommand oleDbInsertCommand1;
private System.Data.OleDb.OleDbCommand oleDbUpdateCommand1;
private System.Data.OleDb.OleDbCommand oleDbDeleteCommand1;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.oleDbConnection1 = new System.Data.OleDb.OleDbConnection();
this.dataGrid1 = new System.Windows.Forms.DataGrid();
this.dataSet1 = new New_DB.DataSet1();
this.oleDbDataAdapter1 = new System.Data.OleDb.OleDbDataAdapter();
this.oleDbDeleteCommand1 = new System.Data.OleDb.OleDbCommand();
this.oleDbInsertCommand1 = new System.Data.OleDb.OleDbCommand();
this.oleDbSelectCommand1 = new System.Data.OleDb.OleDbCommand();
this.oleDbUpdateCommand1 = new System.Data.OleDb.OleDbCommand();
this.btnUpdate = new System.Windows.Forms.Button();
this.btnAddRow = new System.Windows.Forms.Button();
this.btnLoad = new System.Windows.Forms.Button();
this.btnDelete = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.dataSet1)).BeginInit();
this.SuspendLayout();
//
// oleDbConnection1
//
this.oleDbConnection1.ConnectionString = @"Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Database Password=;Data Source=""C:\Documents and Settings\Administrator\Dokumenter\test.mdb"";Password=;Jet OLEDB:Engine Type=5;Jet OLEDB:Global Bulk Transactions=1;Provider=""Microsoft.Jet.OLEDB.4.0"";Jet OLEDB:System database=;Jet OLEDB:SFP=False;Extended Properties=;Mode=Share Deny None;Jet OLEDB:New Database Password=;Jet OLEDB:Create System Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;User ID=Admin;Jet OLEDB:Encrypt Database=False";
//
// dataGrid1
//
this.dataGrid1.DataMember = "";
this.dataGrid1.DataSource = this.dataSet1.temptabel;
this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText;
this.dataGrid1.Location = new System.Drawing.Point(8, 8);
this.dataGrid1.Name = "dataGrid1";
this.dataGrid1.Size = new System.Drawing.Size(472, 200);
this.dataGrid1.TabIndex = 0;
//
// dataSet1
//
this.dataSet1.DataSetName = "DataSet1";
this.dataSet1.Locale = new System.Globalization.CultureInfo("da-DK");
//
// oleDbDataAdapter1
//
this.oleDbDataAdapter1.DeleteCommand = this.oleDbDeleteCommand1;
this.oleDbDataAdapter1.InsertCommand = this.oleDbInsertCommand1;
this.oleDbDataAdapter1.SelectCommand = this.oleDbSelectCommand1;
this.oleDbDataAdapter1.TableMappings.AddRange(new System.Data.Common.DataTableMapping[] {
new System.Data.Common.DataTableMapping("Table", "temptabel", new System.Data.Common.DataColumnMapping[] {
new System.Data.Common.DataColumnMapping("Id", "Id"),
new System.Data.Common.DataColumnMapping("Temp", "Temp"),
new System.Data.Common.DataColumnMapping("Tidspunkt", "Tidspunkt")})});
this.oleDbDataAdapter1.UpdateCommand = this.oleDbUpdateCommand1;
//
// oleDbDeleteCommand1
//
this.oleDbDeleteCommand1.CommandText = "DELETE FROM temptabel WHERE (Id = ?) AND (Temp = ? OR ? IS NULL AND Temp IS NULL)" +
" AND (Tidspunkt = ? OR ? IS NULL AND Tidspunkt IS NULL)";
this.oleDbDeleteCommand1.Connection = this.oleDbConnection1;
this.oleDbDeleteCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Original_Id", System.Data.OleDb.OleDbType.Integer, 0, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "Id", System.Data.DataRowVersion.Original, null));
this.oleDbDeleteCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Original_Temp", System.Data.OleDb.OleDbType.Integer, 0, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "Temp", System.Data.DataRowVersion.Original, null));
this.oleDbDeleteCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Original_Temp1", System.Data.OleDb.OleDbType.Integer, 0, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "Temp", System.Data.DataRowVersion.Original, null));
this.oleDbDeleteCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Original_Tidspunkt", System.Data.OleDb.OleDbType.DBDate, 0, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "Tidspunkt", System.Data.DataRowVersion.Original, null));
this.oleDbDeleteCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Original_Tidspunkt1", System.Data.OleDb.OleDbType.DBDate, 0, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "Tidspunkt", System.Data.DataRowVersion.Original, null));
//
// oleDbInsertCommand1
//
this.oleDbInsertCommand1.CommandText = "INSERT INTO temptabel(Temp, Tidspunkt) VALUES (?, ?)";
this.oleDbInsertCommand1.Connection = this.oleDbConnection1;
this.oleDbInsertCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Temp", System.Data.OleDb.OleDbType.Integer, 0, "Temp"));
this.oleDbInsertCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Tidspunkt", System.Data.OleDb.OleDbType.DBDate, 0, "Tidspunkt"));
//
// oleDbSelectCommand1
//
this.oleDbSelectCommand1.CommandText = "SELECT Id, Temp, Tidspunkt FROM temptabel";
this.oleDbSelectCommand1.Connection = this.oleDbConnection1;
//
// oleDbUpdateCommand1
//
this.oleDbUpdateCommand1.CommandText = "UPDATE temptabel SET Temp = ?, Tidspunkt = ? WHERE (Id = ?) AND (Temp = ? OR ? IS" +
" NULL AND Temp IS NULL) AND (Tidspunkt = ? OR ? IS NULL AND Tidspunkt IS NULL)";
this.oleDbUpdateCommand1.Connection = this.oleDbConnection1;
this.oleDbUpdateCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Temp", System.Data.OleDb.OleDbType.Integer, 0, "Temp"));
this.oleDbUpdateCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Tidspunkt", System.Data.OleDb.OleDbType.DBDate, 0, "Tidspunkt"));
this.oleDbUpdateCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Original_Id", System.Data.OleDb.OleDbType.Integer, 0, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "Id", System.Data.DataRowVersion.Original, null));
this.oleDbUpdateCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Original_Temp", System.Data.OleDb.OleDbType.Integer, 0, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "Temp", System.Data.DataRowVersion.Original, null));
this.oleDbUpdateCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Original_Temp1", System.Data.OleDb.OleDbType.Integer, 0, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "Temp", System.Data.DataRowVersion.Original, null));
this.oleDbUpdateCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Original_Tidspunkt", System.Data.OleDb.OleDbType.DBDate, 0, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "Tidspunkt", System.Data.DataRowVersion.Original, null));
this.oleDbUpdateCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Original_Tidspunkt1", System.Data.OleDb.OleDbType.DBDate, 0, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "Tidspunkt", System.Data.DataRowVersion.Original, null));
//
// btnUpdate
//
this.btnUpdate.Location = new System.Drawing.Point(368, 240);
this.btnUpdate.Name = "btnUpdate";
this.btnUpdate.TabIndex = 1;
this.btnUpdate.Text = "Update";
this.btnUpdate.Click += new System.EventHandler(this.btnUpdate_Click);
//
// btnAddRow
//
this.btnAddRow.Location = new System.Drawing.Point(248, 240);
this.btnAddRow.Name = "btnAddRow";
this.btnAddRow.TabIndex = 2;
this.btnAddRow.Text = "Add Row";
this.btnAddRow.Click += new System.EventHandler(this.btnAddRow_Click);
//
// btnLoad
//
this.btnLoad.Location = new System.Drawing.Point(32, 232);
this.btnLoad.Name = "btnLoad";
this.btnLoad.TabIndex = 3;
this.btnLoad.Text = "Load";
this.btnLoad.Click += new System.EventHandler(this.btnLoad_Click);
//
// btnDelete
//
this.btnDelete.Location = new System.Drawing.Point(136, 248);
this.btnDelete.Name = "btnDelete";
this.btnDelete.TabIndex = 4;
this.btnDelete.Text = "Delete";
this.btnDelete.Click += new System.EventHandler(this.btnDelete_Click);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(488, 314);
this.Controls.Add(this.btnDelete);
this.Controls.Add(this.btnLoad);
this.Controls.Add(this.btnAddRow);
this.Controls.Add(this.btnUpdate);
this.Controls.Add(this.dataGrid1);
this.Name = "Form1";
this.Text = "Form1";
((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.dataSet1)).EndInit();
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void btnUpdate_Click(object sender, System.EventArgs e)
{
// Gem i DB
oleDbConnection1.Open();
oleDbDataAdapter1.Update(dataSet1);
oleDbConnection1.Close();
}
private void btnAddRow_Click(object sender, System.EventArgs e)
{
// Husk her gemmes ikke i databasen
DataSet1.temptabelRow temptabelRow = dataSet1.temptabel.NewtemptabelRow();
temptabelRow.Temp = 23;
temptabelRow.Tidspunkt = DateTime.Now;
MessageBox.Show(DateTime.Now.ToString());
dataSet1.temptabel.AddtemptabelRow(temptabelRow);
}
private void btnLoad_Click(object sender, System.EventArgs e)
{
dataGrid1.TableStyles.Clear();
oleDbConnection1.Open();
oleDbDataAdapter1.Fill(dataSet1);
oleDbConnection1.Close();
/* Create a new DataGridTableStyle and set
its MappingName to the TableName of a DataTable. */
//Under her ændres visningen af Datetime så time også kommer med i visninge
DataGridTableStyle ts1 = new DataGridTableStyle();
ts1.MappingName = "temptabel";
DataGridColumnStyle TextCol1 = new DataGridTextBoxColumn();
TextCol1.MappingName = "Tidspunkt";
TextCol1.HeaderText = "Tidspunkt";
TextCol1.Width = 250;
ts1.GridColumnStyles.Add(TextCol1);
DataGridColumnStyle TextCol2 = new DataGridTextBoxColumn();
TextCol2.MappingName = "Temp";
TextCol2.HeaderText = "Temperatur";
TextCol2.Width = 250;
ts1.GridColumnStyles.Add(TextCol2);
dataGrid1.TableStyles.Add(ts1);
}
private void btnDelete_Click(object sender, System.EventArgs e)
{
//dataSet1.temptabel.RemovetemptabelRow(dataSet1.cu.temptabel.Rows(dataGrid1.CurrentRowIndex));
}
}
}
