Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

dataset.fieldbyname().asstring

Posted on 2004-10-13
6
Medium Priority
?
2,744 Views
Last Modified: 2008-02-01
In Delphi, you use dataset to run a query, like select * from atable.
then you can use dataset.fieldbyname('AFieldName').asString (or as DateTime etc.) to get the field's value.

But I find in C#, you can only use fields' index to get the value rather than using field's name. So if you change your select fields order or insert a new field in the select, you have to chnage a lot of statements.

Is there a way use field's name like Delphi in C#?
0
Comment
Question by:petershaw8
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
6 Comments
 
LVL 5

Expert Comment

by:tomasX2
ID: 12303776
dataSet.Tables[0].Rows[nRowNumber]["ColumnName"].ToString();

0
 
LVL 3

Expert Comment

by:Realmrat
ID: 12304313
              string connectionString = "my conn string";

               string commandString = "SELECT * FROM mytable";

               OdbcDataAdapter adapter = new OdbcDataAdapter(commandString,connectionString);

               DataSet data = new DataSet();
               adapter.Fill (data);

               // Loop for each record in the dataset
               foreach( DataRow row in data.Tables[0].Rows )
               {
                     mycombobox.Items.Add( row["myColumnName"] );
               }

Puts all the fields into a dropdown box.  Dunno if that helps any.  =]  Same thing as above almost.

 - Joe
0
 

Author Comment

by:petershaw8
ID: 12314246
For tomasX2  solution, I am not sure if it works for a little bit complicated sql statement, like
select a.aCol1,
         b.bCol1,
        (select cCol2 from cTablen where cCol1 = aCol1) as cCol2
from aTable a, bTable b

In this case, I guess dataSet.Tables[0] regers aTable, dataSet.Tables[1] refers bTable, but how about  cCol2?

For Joe's solution, Does the  row["myColumnName"]  always returns a string? and if the field is type of DateTime, then you need convert it fromstring to datetime?


Peter
0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
LVL 3

Expert Comment

by:Realmrat
ID: 12316260
The row[index] returns an object, so you can cast it to it's original value.

 - Joe
0
 
LVL 3

Expert Comment

by:Realmrat
ID: 12316521
Here's a little form in ASP.NET you can test with.  Shows how to interact with object values from the row[index] feature ... I was bored.  =]

 - Joe

                                                                  Page:
|-------------------------------------------------------------------------------------------------------------

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="EE.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
    <HEAD>
        <title>WebForm1</title>
        <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
        <meta content="C#" name="CODE_LANGUAGE">
        <meta content="JavaScript" name="vs_defaultClientScript">
        <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
    </HEAD>
    <body>
        <form id="Form1" method="post" runat="server">
            <table align="center">
                <tr>
                    <td><asp:datagrid id="DataGrid1" runat="server" Width="100%"></asp:datagrid></td>
                </tr>
                <tr>
                    <td align="center"><asp:button id="GetDateButton" runat="server" Text="Get Long Date"></asp:button><asp:button id="GetTimeButton" runat="server" Text="Get Short Time"></asp:button></td>
                </tr>
                <tr>
                    <td><br>
                        <br>
                        <asp:Label id="MessageLabel" runat="server" Font-Bold="True"></asp:Label>
                        <br>
                        <asp:DropDownList id="DropDownList1" runat="server"></asp:DropDownList></td>
                </tr>
            </table>
        </form>
    </body>
</HTML>


                                                                  Code:
|-------------------------------------------------------------------------------------------------------------

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.Odbc;
using System.Data.SqlTypes;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace EE
{
      /// <summary>
      /// Summary description for WebForm1.
      /// </summary>
      public class WebForm1 : System.Web.UI.Page
      {
        protected DataTable data;
        protected System.Web.UI.WebControls.DataGrid DataGrid1;
        protected System.Web.UI.WebControls.Button GetDateButton;
        protected System.Web.UI.WebControls.Label MessageLabel;
        protected System.Web.UI.WebControls.DropDownList DropDownList1;
        protected System.Web.UI.WebControls.Button GetTimeButton;
        protected DataView  dataView;
            private void Page_Load(object sender, System.EventArgs e)
            {
            if (Session["TestData"] == null)
            {
                BuildTable();
            }
            else
                data = (DataTable)Session["TestData"];

            dataView = new DataView(data);
            dataView.Sort = "Item";
            if (!IsPostBack)
                BindList();
            }

        private void BindList()
        {
            DataGrid1.DataSource = dataView;
            DataGrid1.DataBind();
        }

        private void BuildTable()
        {
           
            data = new DataTable();
            data.Columns.Add(new DataColumn("Qty", typeof(string)));
            data.Columns.Add(new DataColumn("Item", typeof(string)));
            data.Columns.Add(new DataColumn("Price", typeof(string)));
            // Can also Use OdbcType.DateTime, SqlDateTime, etc
            data.Columns.Add(new DataColumn("Date", typeof(DateTime)));
            Session["DL3_ShoppingCart"] = data;

            // first load -- prepopulate with some data
            for (int i=1; i<5; i++)
            {
                DataRow dr = data.NewRow();
                dr[0] = ((int)((i%2)+1)).ToString();
                dr[1] = "Item " + i.ToString();
                dr[2] = ((double)(1.23 * (i+1))).ToString();
                dr[3] = DateTime.Now.AddDays((int)(2*(i+30)));
                data.Rows.Add(dr);
            }
        }

            #region Web Form Designer generated code
            override protected void OnInit(EventArgs e)
            {
                  //
                  // CODEGEN: This call is required by the ASP.NET Web Form Designer.
                  //
                  InitializeComponent();
                  base.OnInit(e);
            }
            
            /// <summary>
            /// Required method for Designer support - do not modify
            /// the contents of this method with the code editor.
            /// </summary>
            private void InitializeComponent()
            {    
            this.GetDateButton.Click += new System.EventHandler(this.GetDateButton_Click);
            this.GetTimeButton.Click += new System.EventHandler(this.GetTimeButton_Click);
            this.Load += new System.EventHandler(this.Page_Load);

        }
            #endregion

        private void GetDateButton_Click(object sender, System.EventArgs e)
        {
            try
            {
                foreach(DataRow row in data.Rows)
                {
                    DateTime myDate = (DateTime) row["date"];
                    DropDownList1.Items.Add(myDate.ToLongDateString());
                }
            }
            catch(Exception exc)
            {
                MessageLabel.Text = exc.Message;
            }
        }

        private void GetTimeButton_Click(object sender, System.EventArgs e)
        {
            try
            {
                foreach(DataRow row in data.Rows)
                {
                    DateTime myDate = (DateTime) row["date"];
                    DropDownList1.Items.Add(myDate.ToShortTimeString());
                }
            }
            catch(Exception exc)
            {
                MessageLabel.Text = exc.Message;
            }
        }
      }
}
0
 
LVL 3

Accepted Solution

by:
Realmrat earned 500 total points
ID: 12316534
As you can see, I stole some of the code from the ASP.NET quickstarts ... I missed an edit line!

            data.Columns.Add(new DataColumn("Date", typeof(DateTime)));
      ->  Session["DL3_ShoppingCart"] = data;

Hahaha  =]

 - Joe
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

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

Extention Methods in C# 3.0 by Ivo Stoykov C# 3.0 offers extension methods. They allow extending existing classes without changing the class's source code or relying on inheritance. These are static methods invoked as instance method. This…
Introduction This article series is supposed to shed some light on the use of IDisposable and objects that inherit from it. In essence, a more apt title for this article would be: using (IDisposable) {}. I’m just not sure how many people would ge…
Monitoring a network: how to monitor network services and why? Michael Kulchisky, MCSE, MCSA, MCP, VTSP, VSP, CCSP outlines the philosophy behind service monitoring and why a handshake validation is critical in network monitoring. Software utilized …
Add bar graphs to Access queries using Unicode block characters. Graphs appear on every record in the color you want. Give life to numbers. Hopes this gives you ideas on visualizing your data in new ways ~ Create a calculated field in a query: …
Suggested Courses

721 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