?
Solved

Urgent data adapter not saving data

Posted on 2004-10-16
3
Medium Priority
?
191 Views
Last Modified: 2010-04-15
Hello experts.  I am loading in a table with 300 stocks, then poulating the table with the latest data from another table.  

I have checked the dataGrid and the changes to the dataTable in C# code is flawless.

The problem here is the data adapter is not updating all the rows. In fact, it is only updating half of the rows, leaving half empty. I dont know how to solve this.

Any recommendations on how the get the dataset to save the sql server would be greatly appreciated!

Thanks


using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;

namespace Stocktable
{

      public class Form1 : System.Windows.Forms.Form
      {
            public DataSet virtualDatabase;
            public SqlConnection cnDatabase;
            public string cnString;
            public System.Data.SqlClient.SqlDataAdapter da_tblStocks;
            public System.Data.SqlClient.SqlDataAdapter da_tblStockPrices;
            public SqlCommandBuilder cb_tblStocks;
            public SqlCommandBuilder cb_tblStockPrices;
            public DataTable tblStocks;
            public DataTable tblStockPrices;
            public DataRow drStock;
            public DataRow drStockPrice;
            private System.Windows.Forms.DataGrid dataGrid1;
            private System.Windows.Forms.Button button1;

            private System.ComponentModel.Container components = null;

            public Form1()
            {
                  InitializeComponent();
                  virtualDatabase = new DataSet();
                  cnString = "workstation id=HISTDB;packet size=4096;integrated security=SSPI;data source=\"HIST" +
                        "DB\\STOCKDATABASE\";persist security info=True;initial catalog=DB1";
                  cnDatabase = new SqlConnection(cnString);
                  cnDatabase.Open();
                  da_tblStocks = new SqlDataAdapter("SELECT * from tblStocks", cnDatabase);
                  da_tblStocks.Fill(virtualDatabase, "tblStocks");
                  cb_tblStocks = new SqlCommandBuilder(da_tblStocks);
                  tblStocks = virtualDatabase.Tables["tblStocks"];

                  da_tblStockPrices = new SqlDataAdapter("SELECT * from tblStockPrice", cnDatabase);
                  da_tblStockPrices.Fill(virtualDatabase, "tblStockPrices");
                  cb_tblStockPrices = new SqlCommandBuilder(da_tblStockPrices);
                  tblStockPrices = virtualDatabase.Tables["tblStockPrices"];
      
                  dataGrid1.DataSource = tblStocks.DefaultView;
            }

            protected override void Dispose( bool disposing )
            {
                  if( disposing )
                  {
                        if (components != null)
                        {
                              components.Dispose();
                        }
                  }
                  base.Dispose( disposing );
            }

            #region Windows Form Designer generated code

            private void InitializeComponent()
            {
                  this.dataGrid1 = new System.Windows.Forms.DataGrid();
                  this.button1 = new System.Windows.Forms.Button();
                  ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();
                  this.SuspendLayout();
                  //
                  // dataGrid1
                  //
                  this.dataGrid1.DataMember = "";
                  this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText;
                  this.dataGrid1.Location = new System.Drawing.Point(8, 64);
                  this.dataGrid1.Name = "dataGrid1";
                  this.dataGrid1.Size = new System.Drawing.Size(600, 392);
                  this.dataGrid1.TabIndex = 0;
                  //
                  // button1
                  //
                  this.button1.Location = new System.Drawing.Point(8, 8);
                  this.button1.Name = "button1";
                  this.button1.Size = new System.Drawing.Size(128, 40);
                  this.button1.TabIndex = 1;
                  this.button1.Text = "Update";
                  this.button1.Click += new System.EventHandler(this.button1_Click);
                  //
                  // Form1
                  //
                  this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
                  this.ClientSize = new System.Drawing.Size(720, 461);
                  this.Controls.Add(this.button1);
                  this.Controls.Add(this.dataGrid1);
                  this.Name = "Form1";
                  this.Text = "Form1";
                  this.Load += new System.EventHandler(this.Form1_Load);
                  ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();
                  this.ResumeLayout(false);

            }
            #endregion

            [STAThread]
            static void Main()
            {
                  Application.Run(new Form1());
            }

            private void Form1_Load(object sender, System.EventArgs e)
            {
                  DataRow[] draStocks = tblStocks.Select("stock_id > 0", "symbol");
                  DataRow[] draStockPrices;
                  DataRow[] draTemp;
                  DataRow drTemp;
                  foreach (DataRow drStock in draStocks)
                  {
                        draStockPrices = tblStockPrices.Select("stock_id = " + drStock["stock_id"] + " and s_date <= #10-5-04#", "s_date DESC");
                        drStockPrice = (DataRow)draStockPrices.GetValue(0);
                        drStock["s_open"] = convert(drStockPrice["s_open"]);
                        drStock["s_high"] = convert(drStockPrice["s_high"]);
                        drStock["s_low"] = convert(drStockPrice["s_low"]);
                        drStock["s_close"] = convert(drStockPrice["s_close"]);
                  }

            }
            private double convert(object column)
            {
                  if (column == System.DBNull.Value)
                  {
                        return 0;
                  }
                  else
                  {
                        return System.Convert.ToDouble(column);
                  }

            }

            private void button1_Click(object sender, System.EventArgs e)
            {
                        this.virtualDatabase.AcceptChanges();
                        this.da_tblStocks.Update(virtualDatabase, "tblStocks");      
            }


      }
}
0
Comment
Question by:OptionsMM
1 Comment
 
LVL 6

Accepted Solution

by:
ryerras earned 2000 total points
ID: 12329608
May be this is the code block that is causing the weird behaviour

private void button1_Click(object sender, System.EventArgs e)
          {
                    this.virtualDatabase.AcceptChanges();
                    this.da_tblStocks.Update(virtualDatabase, "tblStocks");    
          }


put   --this.virtualDatabase.AcceptChanges();-- after the Update like below

private void button1_Click(object sender, System.EventArgs e)
          {
                  this.da_tblStocks.Update(virtualDatabase, "tblStocks");    
                  this.virtualDatabase.AcceptChanges();
          }
0

Featured Post

Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

In order to hide the "ugly" records selectors (triangles) in the rowheaders, here are some suggestions. Microsoft doesn't have a direct method/property to do it. You can only hide the rowheader column. First solution, the easy way The first sol…
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
Did you know PowerShell can save you time with SaaS platforms? Simply leverage RESTfulAPIs to build your own PowerShell modules. These will kill repetitive tickets and tabs, using the command Invoke-RestMethod. Tune into this webinar to learn how…
Watch the software video of Kernel Import PST to Office 365 tools which can easily import PST and OST files to Office 365 for bulk mailboxes. The process of migration is simple and user can map source and destination mailboxes and easily import data…

590 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question