|
|
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...
|
|
|
|
|
Hi All,
I have generated a crystal report by using C#.NET 2.0 by retrieving the data from MySQL 5.0 Database.
Here I am facing a problem of I am able to display all other datatype fields but I am unable to display DateTime Data Type fields. Why So?
Can any one help me in this regard.
Raju
|
|
|
|
|
Do we ALWAYS have to tell our clients to download that big file called "dotnetfx.exe" from msdn website our little application?? is there any way to handle this, "ie downgrading the compiled version of .net application so it can run happily on older win-xp platforms without having to install any runtime environment package?"
Please share your experiences.
Smile: A curve that can set a lot of things straight!
(\ /)
(O.o)
(><)
|
|
|
|
|
yes it can be done but costly!
i Saw some programs that can convert .Net executables to Native ones dotNetProtector but it costs around 400$
or .NET Reactor is cheaper one (just can do that with executables)
actually these softwares are disassembly protectorsbut ,for doing this they convert it to native so dissassembling it will give you native assembly, not IL which roll backing it to .NET high level language is far more easier.
and ofcourse there must be some programs to do it as their primary task (like those for JAVA)
but as you know .NET is comming to be integrated in windows like Vista and some version of media Center (.NET1.1), so very soon it would not be neccessery to include it in your package or download it from the web
good luck
|
|
|
|
|
Cross posting is just rude. Especially for a question that's easily answered with google. Cross posting it into the lounge is even worse, although I answered it there, as it's not quite a programming question.
Christian Graus - Microsoft MVP - C++
"I am working on a project that will convert a FORTRAN code to corresponding C++ code.I am not aware of FORTRAN syntax" ( spotted in the C++/CLI forum )
|
|
|
|
|
Are you asking whether your application needs the .Net framework? If so then yes you do and the answer would be that you your client needs to install it.
However, you can package dotnetfx along with your application in your installer project and then you can conditionally run it if there is a need (i.e. if its not installed). Saves them the hassle of downloading it
There are 10 kinds of people in this world. Those who understand binary and those who don't...
______________________
"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." - Rick Cook
|
|
|
|
|
Hallo,
Assume that in a Web Service application under .NET in C#, there is a Web Service method that returns an object of type DataTable..
When a client, to this Web service, calls this method, does the resulting object completely (with its all contents) return to the caller platform? Or returns only a reference to an object of DataTable?
In other words: Is the actually created object (DataTable) held by WebService apllication?
Or is it sent with its whole contents to the client (caller) platform, becoming independent from the connection to WebService anymore??
|
|
|
|
|
First, unless you have created your own version of a serializable DataTable, a web method cannot return a DataTable because it is not serializable. However, a DataSet is serializable and thus you can use it to put your data table in it and return it.
Now, as I believe, a web service is stateless by nature. You can make it statefull with some extra coding but if you use the model generated by VS, it is stateless. This means that there is no persistence of data and when a method returns, the session expires.
So, to answer your question, the client calling the webmethod will get a copy of the DataSet returned and not a reference
Talal
-- 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
|
|
|
|
|
Thanks for your help Talal.
As I am very beginner about WebService, I would like to ask another question upon your remarks: Cannot I use my self-defined type (class) objects in Web Service methods (as a function return type or parameters for functions), if those my-self designed classes are not serializable ?
|
|
|
|
|
You're welcome. I'm glad I can help.
For your classes to be serializable, they need to contain only serializable objects. You can check on MSDN what are the serializable objects. Usually you can have all primitives types like int, string, byte, bool, long, float, etc... as well as arrays of these like int[], byte[], string[] etc...Other types may also be serializable (like DataSet).
If you have a class "A" [being used by the web service] that contains some variables that are not serializable, I suggest you move all the serializable variables (those you want to send across the network) to a new class and reference that class in your class "A".
Talal
-- 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
|
|
|
|
|
Hi fellas.
I am writing a association membership system for my Final Year Project. However I have a few concerns and needs some help.
1. I spoke to my professor, who saids the size of the members in the associate is around several hundreds, maybe a little over a thousand max. I wanted the simpliest database possible. Could Access be able to handle the job? Is it reliable and secure?
2. A friend of mine told me Access only allows 1 database connection at a time. Is this true? Can anyone vouch for this?
3. This is the most important question. The site I am building is a generic one. It will be used in several associations for real. I can safely assume that different associations uses different fields for their databases. Is it possible that I can write an initial setup page, where the user could define the fields involved, then a customized database could be generated? Is it possible?
Thanks and looking forward to you guys' replies!!!
|
|
|
|
|
Access is reliable. No database is 'secure', if you mean, can it hide your data. A SQL Server install at least requires a password, I don't know if Access offers that
It's probable that Access limits the number of connections.
Actually, let's be clear here. You're talking about a Jet database, an MDB file. Access itself actually prefers to store data in SQL Server, if it can. Sql Server Express Edition is free, the main benefit of Access, is that an MDB is easy to deploy.
I don't know if you can create an MDB in pure C#, no. You can do it using some C++ APIs, I am pretty sure, you could p/invoke those. However, it's perhaps easier to build a database that is able to store a flexible schema, or, perhaps one that stores field names apart from the column names. I mean, how generic can it be, and your code still be useful ?
Christian Graus - Microsoft MVP - C++
"I am working on a project that will convert a FORTRAN code to corresponding C++ code.I am not aware of FORTRAN syntax" ( spotted in the C++/CLI forum )
|
|
|
|
|
Wel I am sory I cant tell you exact code but I have seen a .Net project by one of my classmate who generated an Access database through c# code.
I mean its possible. If I find that code I'll surely post it here.
But try to google it out you'll find it.
Mujtaba
|
|
|
|
|
Hi,
Well I'm not a big fan of Access so my knowledge is limited but here goes.
Point 1: Access will handle well the data and I think it will be reliable. For security, it will use a username and a password like an SQL database. Now, the problem with Access in my opinion is that it's just one file. So any mistake in file manipulation and it can just be deleted.
Point 2: I don't know honestly but I would be surprised if it was true...
Point 3: In my opinion, you cannot do anything on that level but I could be wrong. I don't know if you can create tables on the fly, maybe with VBScript or something. I know that in SQL Server, you can use SQL scripts to do that. Finally, in my opinion, it is never a good idea to have a dynamic database like that. I think it will be a big mess to write code to insert and update records for that kind of implementation. But that's just my opinion
Talal
-- 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
|
|
|
|
|
Hi there for all the replies.
However it seems there are more and more question marks for now.
The reason I choose Access is because of simplicity, everything is stored in a file; all I have to is upload a file and voila.
What happens if I had 2 people accessing the same piece of data, and coincidently modifying it at the exact same time (with Access). Could the results be disastrous?
How exactly does those M$ SQL Server and Oracle work? How do I upload the database to the webserver. Is there any database files (as with Access?) for SQL Server? I've been long baffled by the this. And is M$ SQL server free for download?
I also spoke to someone else, he said I could give SQL-Lite a try, exactly what is it?
I can assume that I am able to create databases on the fly with SQL Server?
Thanks a big bunch for the replies!!!
|
|
|
|
|
Infernojericho wrote: The reason I choose Access is because of simplicity, everything is stored in a file; all I have to is upload a file and voila.
Yes, that's all it has going for it.
Infernojericho wrote: Could the results be disastrous?
I'm not really sure what concurrency support Access has, how many users are you thinking of ? More than one user, implies that this is a distributed app, so it probably makes sense to consider setting up a SQL Server instance on the server. Having the DB on the server negates any question of security, it's access to the server that is your first line of defence there.
Infernojericho wrote: How exactly does those M$ SQL Server and Oracle work?
They use services to run their main program, and they also create just a data file, the difference is simply that the main DB has to be connected to it.
Infernojericho wrote: How do I upload the database to the webserver.
The way I do it, when I have to, is to do a backup of my local DB, then copy the file to the server, terminal services in, and use the local SQL Server to restore my backup file.
Infernojericho wrote: And is M$ SQL server free for download?
SQL Server is actually cheap, compared to Oracle, but it's quite expensive, in real terms. As I said previously, SS Express is free, it only allows 5 connections or something, tho. If this is a web app, and you get it hosted, you may want to look into MySQL, just because a lot of hosts support it, I believe. But, I am sure you can find hosts with SQL Server hosting.
Infernojericho wrote: I also spoke to someone else, he said I could give SQL-Lite a try, exactly what is it?
Never heard of it, could he mean SQL Server Express ?
Infernojericho wrote: I can assume that I am able to create databases on the fly with SQL Server?
SQL Server is a real database, Access isn't quite. You can run any SQL you like on a SQL Server instance, and you can write SQL to create any database.
Christian Graus - Microsoft MVP - C++
"I am working on a project that will convert a FORTRAN code to corresponding C++ code.I am not aware of FORTRAN syntax" ( spotted in the C++/CLI forum )
|
|
|
|
|
Hi,
Christian Graus wrote: The way I do it, when I have to, is to do a backup of my local DB, then copy the file to the server, terminal services in, and use the local SQL Server to restore my backup file.
I have a question concerning that matter. I know it's not the right thread or forum maybe but since you mentionned it...
I ran into that problem. I had my SQL Server 2005 database on the dev server and we wanted to copy the data to the testing server. The first thing I thought of was backup and restore but it didn't work.
The backup went well but when i took the file and tried restoring, it kept saying that this backup file was not made for that database.
I was wondering if there are special flags or configurations to set for it to work. The way I did it was just to have the same database on both sides, i.e. same tables (but empty) and same stored procedures. And then I ran the backup procedure with the default settings.
Could you please tell me what might be wrong?
Thanks
-- 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
|
|
|
|
|