Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

Urgent data adapter not saving data

Posted on 2004-10-16
3
Medium Priority
?
188 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
3 Comments
 
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

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction Although it is an old technology, serial ports are still being used by many hardware manufacturers. If you develop applications in C#, Microsoft .NET framework has SerialPort class to communicate with the serial ports.  I needed to…
We all know that functional code is the leg that any good program stands on when it comes right down to it, however, if your program lacks a good user interface your product may not have the appeal needed to keep your customers happy. This issue can…
This video shows how to quickly and easily deploy an email signature for all users in Office 365 and prevent it from being added to replies and forwards. (the resulting signature is applied on the server level in Exchange Online) The email signat…
Loops Section Overview

885 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