|
nish85 wrote: i have four fields in an exel file (EmpID, EmpName ,EmpSalary and DepartmentName) . I want to import these fields to a Datagrid view in my application and to database also. Pls help me with code of this application... I am using C# windows application .....
Just a backup
Luc Pattyn [Forum Guidelines] [My Articles]
this weeks tips:
- make Visual display line numbers: Tools/Options/TextEditor/...
- show exceptions with ToString() to see all information
- before you ask a question here, search CodeProject, then Google
|
|
|
|
|
|
Posts like that will never get any useful reply. It's even worse when you post it twice in a period of 1 min.
-- If this is a post that has been helpful to you, please vote for it. Thank you!
"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning."
--Rich Cook
|
|
|
|
|
This has been asked many times on this forum so use search before asking questions
|
|
|
|
|
i couldnt find any article tht related my problem..
|
|
|
|
|
That's a load of crap, there is at least 100 posts on that topic in this forum, and quite a few articles.
I get all the news I need from the weather report - Paul Simon (from "The Only Living Boy in New York")
|
|
|
|
|
would you like anything else your excellency?
-- If this is a post that has been helpful to you, please vote for it. Thank you!
"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning."
--Rich Cook
|
|
|
|
|
I'm using .net 1.1
Now I have tried with the code:
System.Text.ASCIIEncoding encoder=new System.Text.ASCIIEncoding();
byte bytes=encoder.GetBytes(p_strXmlFrag); //Here its giving error
MemoryStream ms=new MemoryStream(bytes);
XmlWriter writer=XmlWriter.Create(ms); //Here it could not find create method
ms.Position=0;
XmlTextReader.xmlFile=new XmlTextReader(ms);
----
----
----
----
------------------------------------------------------------------------------------------------------------------------------------------------------------------
I'm also pasting the total method code to make it clear:
public static bool Validate(string p_strMmlFrag, out string p_strErr)
{
p_strErr=string.Empty;
//starting of if statement
if m_xsc==null)
{
m_xsc=new XmlSchemaCollection();
try
{
string path=AppDomain.CurrentDomain.BaseDirectory+m_strSchema;
if (!File.Exists(path))
{
path=AppDomain.CurrentDoamin.BaseDirectory+"/bin"+m_strSchema;
}
XmlTextReader xmlFile=new XmlTextReader(path);
m_ifSchema=XmlSchema.Read(xmlFile, new ValidationEventHandler (ValidationCallBack));
//Error rises in the above line as the destination file path (stored in path variable), I have just created (the file) and it's definitely empty. I tried the above mentioned solution but it's giving error!!!!!!!!
m_xsc.Add(m_ifSchema);
}
// ending of if statement
catch
{
-----
}
-------
------
-------
------
private const string m_strSchema="StructureLinkage.xsd"
private static XmlSchemaCollection=m_xsc;
private static XmlSchema m_ifSchema;
// For the first time only m_xsc in null and after that it does not need to enter into above block of code once m_xsc is instantiated.
}
|
|
|
|
|
Hi,
some suggestions:
- read the documentation on the classes you intend to use; that is what documentation
is for;
- XmlWriter.Create() does exist and has many overloads
- show your code in PRE tags, that makes it easier to read
- when a compile error is generated, show it exactly as it is shown to you
- when (later, if it ever will build) an exception occurs, show it with
myException.ToString() and show the outcome in your message
- encoder.GetBytes(p_strXmlFrag) returns a byte array, not a single byte that
you like to call "bytes"; so the destination must be of type byte[]
- don't call your problem urgent, if it is urgent it only means you started too late.
Luc Pattyn [Forum Guidelines] [My Articles]
this weeks tips:
- make Visual display line numbers: Tools/Options/TextEditor/...
- show exceptions with ToString() to see all information
- before you ask a question here, search CodeProject, then Google
|
|
|
|
|
|
Hi
iam uploading two separate sqlserver db files in first form.I want to list out tables in two dropdown list boxes from this two database in second form.Plz help me if u have source code it will be very useful.Thanks in advance.
|
|
|
|
|
Upload the files and attach the database using the sp_attach_db stored procedure in the master database. The open a seperate connection and query the sysobjects table in your database to retrieve all tables...
|
|
|
|
|
when you want run a stored procedure in the sql server 2005 through windows form in c# , how to invoke the stored procedure. specially when retreiving data .
|
|
|
|
|
Use the SqlCommand and set the command type property to Stored Procedure :
<br />
SqlCommand comm = new SqlCommand();<br />
comm.CommandType = CommandType.StoredProcedure;<br />
(include the System.Data.SqlClient namespace in order to get your code working )
|
|
|
|
|
hey guyz..
anyone know how to change crystal report connection at runtime, im just a beginner of using this.. i can generate reports and filter records, but im worrying about the connection if ever i run this to other computer...i need your help badly...tnx guyz in advance
|
|
|
|
|
Try to search for this property setdatabaselogon of the ReportDocument class.
|
|
|
|
|
|
Try this:
<br />
Tables tables = reportDocument.Database.Tables;<br />
foreach (CrystalDecisions.CrystalReports.Engine.Table table in tables)<br />
{<br />
TableLogOnInfo tableLogonInfo = table.LogOnInfo;<br />
tableLogonInfo.ConnectionInfo = connectionInfo;<br />
table.ApplyLogOnInfo(tableLogonInfo);<br />
}<br />
reportDocument is your instance of the CrystalDecisions.CrystalReports.EngineReportDocument class, and connectionInfo is the instance of the ConnectionInfo class where you configure the database, username, and password.
You can then manage the connection through the web.config (for web) or app.config (for pc based) file, thus allowing you to change it w/out having to recompile. Or you could check certain circumstances, and depending on the outcome, point to different sources.
|
|
|
|
|
tnx guyz..im using web config..n_n
|
|
|
|
|
hi,
After i serialize a few arraylist, my xml file seem to look like below:
<code>
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfAnyType xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<anyType xsi:type="xsd:int">1</anyType>
</ArrayOfAnyType><?xml version="1.0" encoding="utf-8"?>
<ArrayOfAnyType xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<anyType xsi:type="Color" />
</ArrayOfAnyType><?xml version="1.0" encoding="utf-8"?>
<ArrayOfAnyType xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<anyType xsi:type="ArrayOfPoint">
<Point>
<X>40</X>
<Y>18</Y>
</Point>
<Point>
<X>110</X>
<Y>18</Y>
</Point>
<Point>
<X>110</X>
<Y>68</Y>
</Point>
<Point>
<X>40</X>
<Y>68</Y>
</Point>
</anyType>
</ArrayOfAnyType><?xml version="1.0" encoding="utf-8"?>
<ArrayOfAnyType xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" /><?xml version="1.0" encoding="utf-8"?>
<ArrayOfAnyType xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<anyType xsi:type="MemoryStream">
<Position>142</Position>
<Capacity>256</Capacity>
</anyType>
</ArrayOfAnyType></code>
is this an error? why does is the elements is named '<ArrayOfAnyType>'
Besides, how do i deserialize arraylist of different types.
first i declare:
<code>XmlSerializer s = new XmlSerializer( typeof(ArrayList),new Type[] {typeof(Coordinate),typeof(ColorL),typeof(SizeL), typeof(ArrSave)} );
</code>
then in Load function:
<code>
filename = openFileDialog.FileName;
Stream myStream = openFileDialog.OpenFile();
ShapeTypeList = (ArrayList) s.Deserialize(myStream);
ColorList = (ArrayList) s.Deserialize(myStream);
CoordList = (ArrayList)s.Deserialize(myStream);
SizeList = (ArrayList) s.Deserialize(myStream);
arr=(ArrayList) s.Deserialize(myStream);</code>
thanks for any reply
|
|
|
|
|
As far as i know if you put the attributes directly on the arraylist they don't work for giving the alternate name you set you must put them on classes and properties
here is an exapmle
if you write your code somewhat like this
[XmlArray("DataArray")]
[XmlArrayItem("DataArrayElement")]
ArrayList arr = new ArrayList();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
arr.Add("Manoj");
arr.Add(4);
arr.Add(4.5);
XmlSerializer xmlSer = new XmlSerializer(arr.GetType());
FileStream fo=new FileStream(@"N:\xmlserTest.xml",FileMode.OpenOrCreate);
xmlSer.Serialize(fo,arr);
fo.Close();
}
the result would be like
<?xml version="1.0"?>
<ArrayOfAnyType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<anyType xsi:type="xsd:string">Manoj</anyType>
<anyType xsi:type="xsd:int">4</anyType>
<anyType xsi:type="xsd:double">4.5</anyType>
</ArrayOfAnyType>
and if you write it like this
[XmlRoot("MyData")]
public class MyData
{
ArrayList arr = new ArrayList();
[XmlArray("DataArray")]
[XmlArrayItem("DataArrayElement")]
public ArrayList TheData
{
get { return this.arr; }
}
public MyData()
{
arr.Add("Manoj");
arr.Add(4);
arr.Add(4.5);
}
public void Serialize()
{
XmlSerializer xmlSer = new XmlSerializer(typeof(MyData));
FileStream fo = new FileStream(@"N:\xmlserTest.xml", FileMode.OpenOrCreate);
xmlSer.Serialize(fo, this);
fo.Close();
}
}
the result would be
<?xml version="1.0"?>
<MyData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<DataArray>
<DataArrayElement xsi:type="xsd:string">Manoj</DataArrayElement>
<DataArrayElement xsi:type="xsd:int">4</DataArrayElement>
<DataArrayElement xsi:type="xsd:double">4.5</DataArrayElement>
</DataArray>
</MyData>
as a tip the XmlRoot Attribute just replace the name of the class with the alternate name
hope the post would be useful
good luck
|
|
|
|
|
Hi, below is how i declare my XmlRoot. However the error is still the same as before. Should i create another class such as MyData class as you shown before?
[XmlRoot("Form")]
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.Panel panel1;
///
/// Required designer variable.
///
private System.ComponentModel.Container components = null;
ColorDialog clg = new ColorDialog();
XmlSerializer s = new XmlSerializer( typeof(ArrayList),new Type[] {typeof(Coordinate),typeof(ColorL),typeof(SizeL), typeof(ArrSave)} );
ArrayList ShapeTypeList=new ArrayList ();
ArrayList ColorList=new ArrayList ();
private ArrayList alDrawingObjects = new ArrayList();
ArrayList CoordList=new ArrayList();
//[XmlArray("CoordinateData")]
[XmlElement("Coordinate",typeof(Coordinate))]
public ArrayList coordList
{
get{return CoordList;}
set{CoordList=value;}
}
public class Coordinate
{
public Coordinate(){}
public Point[] point
{
get{return point;}
set{point=value;}
}
}............
Thanks for the reply
|
|
|
|
|
hi,
now i've tried to create the MyData class. However, i'm stuck on how to change the codes in the form to do the serialization. below is some of the codes:
MyData Class:
<br />
[XmlRoot("MyData")]<br />
public class MyData<br />
{<br />
public MyData()<br />
{<br />
}<br />
<br />
public MyData(ArrayList shape, ArrayList color, ArrayList coord, ArrayList size, ArrayList gpd)<br />
{<br />
this.ShapeTypeList = shape;<br />
this.ColorList = color;<br />
this.CoordList = coord;<br />
this.SizeList = size;<br />
this.arrS = gpd;<br />
}<br />
<br />
public enum TypeOfShape<br />
{<br />
Square, Rect, Parallelogram, Trapezoid, Diamond, Triangle, RightAngleTriangle,Circle,Oval,Hexagon,Pentagon,None<br />
}<br />
<br />
XmlSerializer s = new XmlSerializer( typeof(ArrayList),new Type[] {typeof(Coordinate),typeof(ColorL),typeof(SizeL), typeof(ArrSave)} );<br />
<br />
<br />
ArrayList ShapeTypeList=new ArrayList ();<br />
ArrayList ColorList=new ArrayList ();<br />
ArrayList CoordList=new ArrayList();<br />
ArrayList SizeList = new ArrayList();<br />
ArrayList arrS = new ArrayList();<br />
ArrayList PathList =new ArrayList();<br />
<br />
<br />
<br />
<br />
[XmlElement("Coordinate",typeof(Coordinate))]<br />
public ArrayList coordList<br />
{<br />
get{return CoordList;}<br />
set{CoordList=value;}<br />
} <br />
<br />
public class Coordinate<br />
{<br />
public Coordinate(){}<br />
public Point[] point<br />
{<br />
get{return point;}<br />
set{point=value;}<br />
<br />
}<br />
<br />
}.....................<br />
MovePosition Function in Form:
private void MovePosition(int position,int BshapeNo,int sztotal,int szOrd)<br />
{<br />
if((TypeOfShape)ShapeTypeList[shapeNo]!=TypeOfShape.Circle&&(TypeOfShape)ShapeTypeList[shapeNo]!=TypeOfShape.Oval)<br />
{<br />
alDrawingObjects.Insert(position, new Polygon((Color)ColorList[shapeNo], (Point[])CoordList[shapeNo], 5,(GraphicsPath)PathList[shapeNo] )); <br />
}<br />
<br />
else if ((TypeOfShape)ShapeTypeList[shapeNo]==TypeOfShape.Circle||(TypeOfShape)ShapeTypeList[shapeNo]==TypeOfShape.Oval)<br />
{ <br />
<br />
alDrawingObjects.Insert(position, new Ellipse((Color)ColorList[shapeNo],(Point[]) CoordList[shapeNo], (Size)SizeList[sizeOrder], 5) );<br />
SizeList.Insert(sztotal,(Size)SizeList[sizeOrder]);<br />
SizeList.RemoveAt(szOrd);<br />
}<br />
<br />
CoordList.Insert(position, (Point[])CoordList[shapeNo]);<br />
ColorList.Insert(position,(Color)ColorList[shapeNo]);<br />
ShapeTypeList.Insert(position,(TypeOfShape)ShapeTypeList[shapeNo]);<br />
PathList.Insert(position,(GraphicsPath)PathList[shapeNo]);<br />
<br />
alDrawingObjects.RemoveAt(BshapeNo);<br />
CoordList.RemoveAt(BshapeNo);<br />
ColorList.RemoveAt(BshapeNo);<br />
ShapeTypeList.RemoveAt(BshapeNo);<br />
PathList.RemoveAt(BshapeNo);<br />
<br />
panel1.Invalidate();<br />
}
In Save function in the form:
{<br />
<br />
TextWriter w = new StreamWriter( filename );<br />
s.Serialize( w, ShapeTypeList );<br />
s.Serialize( w, ColorList );<br />
s.Serialize( w, CoordList);<br />
s.Serialize( w, SizeList );<br />
<br />
for(int i=0;i<PathList.Count;i++)<br />
{<br />
GraphicsPathData gpd = new GraphicsPathData((GraphicsPath)PathList[i]);<br />
Stream gpdStream = GraphicsPathData.Serialize(gpd);<br />
arrS.Add(gpdStream);<br />
<br />
}<br />
s.Serialize( w, arrS);<br />
<br />
w.Close();<br />
}
Please help!
Thanks for your help
|
|
|
|
|
It's a COM + C#/.NET issue, so published in both, sorry...
************************************************************
I have an in-process COM server in VC++2005, events of which i'm trying to use in C#. After a very short session the following happens:
I can see in debugger of VC++: [Frames below may be incorrect and/or missing, no symbols loaded for rpcrt4.dll] coming from the C# client.
At which point the C# calls Unadvise into my event interface, and i stop receiving events.
In the meantime, the interface continues working in C# properly. The question is: why on earth C# drops the events handler and how to fight this?
************************************************************
P.S. If I track the moment when connection has been unadvised, and try to re-connect again, C# throws: System.Runtime.InteropServices.InvalidComObjectException: COM object that has been separated from its underlying RCW cannot be used.
at System.Runtime.InteropServices.ComTypes.IConnectionPoint.Advise(Object pUnkSink, Int32& pdwCookie)
Free C++ libraries with source code on www.neatcpp.com: TWAIN, DirectShow, Interprocess Communications, etc...
|
|
|
|
|
I seem to have found the problem, which also is a horrible revelation, another .NET bug, I think… So, this is what it was…
In a simple scenario, you bind COM event to your C# handler via += operator, for YourInterfaceVariable.EventName += New MyHandler, which seems to do the job fine.
Now consider a little more complicated scenario, where your main interface doesn’t expose events. Instead, it exposes a property of another interface, which in turn exposes events. Now, you want to attach a C# event handler to that internal interface via the property, obviously, so you give the command: VariableName.PropertyName.EventName += new MyHandler.
By all logic, this must work, and it even does, for a while, a few calls, 10-30, as all-of-a-sudden, your events stop coming in!!! You start asking yourself why, and the answer is astounding: C#/.NET doesn’t support such internal references properly, and at some point they seem to get into the automated garbage collection, or so it would seem. How do I know? That’s simple: I declared another variable of type of the internal event interface, then set it at run time, and did C# binding onto that variable instead its reference through the containing interface. And that solved the problem, the event handler no longer looses the connection.
Now how do you like THEM apples! Am I far indulging into Microsoft hatred or that’s really another screw up on their part?
Any comments are welcome.
Free C++ libraries with source code on www.neatcpp.com: TWAIN, DirectShow, Interprocess Communications, etc...
|
|
|
|
|