|
Yeah so I created a nice little Web Service that returned a custom class called Site which has 3 strings and an int. I kept getting:
System.InvalidOperationException: There was an error generating the XML document. ---> System.InvalidOperationException: The type PortalService.Site was not expected. Use the XmlInclude or SoapInclude attribute to specify types that are not known statically.
at System.Xml.Serialization.XmlSerializationWriter.WriteTypedPrimitive(String name, String ns, Object o, Boolean xsiType)
And I used both XmlInclude and SoapInclude to no avail. So I said screw it and created a string with a delimiter that I could parse when it returned to the client. Perfect. Except now when I call the WebService, the webpage's graphics don't load completely and at random. I suppose this perhaps attributed to the fact that I just did <% Function() %> since the basic Repeater did not suite my needs. Any suggestions?
|
|
|
|
|
I get a compiler error that not all code paths return an error. I'm fairly new at C# so did something change from MFC to C#?
<br />
public bool ConfirmSQLServer()<br />
{<br />
String SrvrName;<br />
SQLutilz sie = new SQLutilz();<br />
<br />
IniFile ini = new IniFile("C:\\Larimore\\Prog\\LA.CFG");<br />
SrvrName = ini.IniReadValue("DATABASE","Server");<br />
ResultsLst.Items.Add("Database Server: " + SrvrName, 0);<br />
String[] SrvrLst = sie.EnumerateSQLServers();<br />
<br />
for (int i = 0; i<SrvrLst.Length;i++)<br />
{<br />
MessageBox.Show(SrvrLst[i].ToString()+ " " + SrvrName.ToUpper());<br />
if (SrvrName.ToUpper().CompareTo(SrvrLst[i].ToString())== 0)<br />
return true;<br />
else<br />
return false;<br />
}<br />
}<br />
<br />
<br />
Thanks
Tom Wright
tawright915@yahoo.com
|
|
|
|
|
Take your return statements out of the for loop.
Example)
bool retValue = false;<br />
for (int i = 0; i {<br />
MessageBox.Show(SrvrLst[i].ToString()+ " " + SrvrName.ToUpper());<br />
if (SrvrName.ToUpper().CompareTo(SrvrLst[i].ToString())== 0)<br />
retValue = true;<br />
break;<br />
}<br />
return retValue;
Eddie
|
|
|
|
|
C# sucks at working out that all code paths do indeed return a value, although in this case, you'll return no matter what on the first iteration.
You should set a return variable with a default value, and return it at the end, change it on the way through if need be. For example, I'd set a bool value to indicate success to false, and reset it to true only when everything had worked as expected.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Christian Graus wrote:
C# sucks at working out that all code paths do indeed return a value
Hmmm... I always had the feeling C# was rather clever doing this. Why exactly do you think C# 'sucks' in this point?
|
|
|
|
|
An example that hit me recently was when I was trying to use an if-elseif construct to return a different result for each value of an enum type. despite having a branch with a return for each possible value c# refused to accept that it always would return a value.
|
|
|
|
|
To be honest, I would think it would be more efficient to code it like I have. No memory is taken up by a BOOL in my code that you would in the earlier suggestion.
Thanks for all the help guys. Some things C# is really good at, other things it's not.
Tom Wright
tawright915@yahoo.com
|
|
|
|
|
Because I've written code where all paths return a value, but they are all in an if/else situation, and the compiler has barfed.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
hi all
anybody can help me to create a text file in c#?
thanks
|
|
|
|
|
Look in the System.IO namespace for lots of classes for reading and writing files.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
<br />
string fn="c:\texfile.txt";<br />
System.IO.StreamWriter sw=new System.IO.StreamWriter(fn,false,System.Text.Encoding.Default);<br />
<br />
sw.WriteLine("Tis is a line in the text file!");<br />
<br />
sw.Write("This text placed to the currnt file pointer place in the textfile");<br />
<br />
sw.Close();<br />
It's quite simply enjoy!
Nemo
|
|
|
|
|
Hi,
In my windows form, I have a set of CheckBoxes, which I am storing the selection as an integer value in the database and I am able to do that with CheckBoxes. But I have a groupBox with two radioButtons, I don't know how to read the bit values from it.
This is my GUI class....
CheckBox1.Checked = r.cSthA; //gets and sets the value for the
// checbox by reading the property
// from the class "r" given below.
// This is a different class
private enum rc : int
{
cSthA = 0x0001
};
public int Rac = 0;
public bool cSthA
{
get { return ((Rac & (int) rc.cSthA) != 0); }
set
{
if (value) Rac |= (int) rc.cSthA;
else Rac &= ~(int)rc.cSthA;
}
}
// How to set the property and read it for a groupBox.
I really appreciate ur help..
Thanks
|
|
|
|
|
Loop through radio buttons and check which are ticked
Sanjay Sansanwal
www.sansanwal.com
|
|
|
|
|
png file has got multilevel property.
I need to load a multilevel png file in separate bitmap (within my application).
How can i do?
|
|
|
|
|
If I populate a combo box manually with items, I can get the selected item using
comboBox.SelectedItem.ToString();
But now I have created a databound combobox, but cannot find out how to get its selected value.
comboBox.SelectedItem.ToString();
Returns System.Data.DataRow
and
comboBox.SelectedText.ToString()
returns "". Even though a value is selected.
How can I get the selected text/value of a datbound comboBox??
|
|
|
|
|
Well. Whats the problem here??
comboBox.SelectedItem contains the DataRow ... just use it.
Alex Korchemniy
|
|
|
|
|
Does anyone know where I can find information on how LIMS are designed? Specifically I'm wondering how a user of a LIMS system can define Materials to test and test methods / results and the program store data correctly for each result type. The front end will be written in C#.
Here's an example of what I need to do:
I have a material id as Liquid 7 which we test regularly. The tests include maybe a moisture (float data type) and a solids (float).
Now we are getting a new material Liquid 9 with tests moisture, solids and Pass. Moisture and solids are the same as for Liquid 7, but Pass is a string based off a visual check of the liquid.
I don't want to manually create a new database table for each new raw material we receive and test. I want an end user to define the test name and test result type and my program somehow store this data in a database for retrieval and analysis.
I don't know how commercial LIMS implement this but if anyone has any ideas I could use them.
|
|
|
|
|
Create a table for each possible test, and a joining table to define what tests occur for each liquid.
Like this
Liquids - int ID (identity), nvarchar(20) name
TestA - int ID (identity), int LiquidID, int result
TestB - int ID (identity), int LiquidID, nvarchar(20) result
LiquidTests int LiquidID, int TestID
Now you can create each liquid, defining which tests it has to take part in, by putting rows into LiquidTests. The LiquidID column in the tests is not needed for this, but if you make it unique, you can then enforce that no test goes in twice for the one liquid.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Thanks for replying, that may be the way I end up going but I need to think about it more.
I thought about doing it that way before but was worried about the extra space taken up by the identity and LiquidID fields for each result.
A new table would also need to be made for each new test result, though this would occur alot less often than we add new Liquids. It would also result in fewer tables than having each liquid in a seperate table.
Our current solution ( I inherited it ) is in access with the tables for each liquid like this:
Liquid A - Record No, Lot No, Date, Analyst, Moisture, Solids, ...
Liquid B - Record No, Lot No, Date, Analyst, Moisture, Solids, Viscosity, ...
Liquid C - Record No, Lot No, Date, Analyst, Moisture, NCO, Visual Check, ...
... for about 50 more
When we get a new liquid we add a new table with fields for the tests we need to run. Most Liquids have more result fields than this (usually from 10 to 15 results.
Most of the time we get the same Liquids in and just add to the current tables but occasionally we get new Liquids.
|
|
|
|
|
drdavis wrote:
I thought about doing it that way before but was worried about the extra space taken up by the identity and LiquidID fields for each result.
I think you're losing more space in the overhead of creating a table for each liquid. Either way, we're not talking about a whole lot of space, unless this really old hardware with a 400 MB drive or something ?
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
We have plenty of hard drive space. I'll build a prototype doing it this way and populate it with the current data we have to check the performance.
|
|
|
|
|
I doubt if any 2 LIMS are even close to the same in design. I have been involved in the design and implementation of several related LIMS, and in projects where data is shared between unrelated LIMS; It's a free-for-all out there.
Most LIMS do have a table of test codes. Some LIMS will allow you to apply a test code to any matrix, but some of them have you enter a new test code if you want to have the same test in a different matrix (material).
For a simple LIMS I might set up these tables for testing materials:
Materials
MaterialID int
MaterialName nvarchar(20)
MaterialDescription nvarchar(255)
TestCodes
TestID int
TestName nvarchar(20) -- something small enough to easily display in a combobox
TestDescription nvarchar(255)
Results
ResultID int
SampleID int -- Links to the sample you tested
NumberResult float
TextResult nvarchar(50)
...other fields relating to the test (person who ran test, date, etc.)
Samples
SampleID int
SampleCode nvarchar(50) -- depends on the code you or your client give to samples
MaterialID int -- foreign key to the Materials table
...other fields describing the sample or its origin
Tests -- put entries in here when you decide to run a particular test on a particular sample
SampleID int -- foreign key to the Samples table
TestID int -- foreign key to the TestCode table
This structure is highly simplified, but would be a good starting point to a simple LIMS. A more complicated LIMS would need a lot more supporting fields and tables, including some quality assurance stuff. Also, scientific results are usually reported with correct significant figures, which means the final results can only be stored as properly formatted strings.
|
|
|
|
|
In the results table why is there "NumberResult float" and "TextResult nvarchar(50)"? Would only one have a value for any one test, depending on the test result type?
This is just for inhouse testing, with me doing the programming on the side. My actual job is doing the testing on the samples.
|
|
|
|
|
I did that to really simplify the design. A nvarchar(in ms sql server) will not take up much space if unused, that way you can keep all results in the same table. Most LIMS work I have done has been in the environmental and bioanalytical fields. I have never had results that were text, therefore, I would expect the TextResult field to usually be blank.
It could be done with 2 tables, but the added complexity for the extra indirection could be avoided. If most of the results will be float, then there is very little waste of space. It's just a design decision for which I have too little information to make a call.
A commercial LIMS would have a table structure closer to the example I gave than what yours is like. The reason is flexibility (a commercial product has to meet more general needs). It makes adding new things easier(new tests, new materials, etc.), but requires more complex queries to get back the result data(joining data from Samples, Materials, Results, TestCodes just to get a report). As long as the database is designed well, a 7 table join can pull data from a multi million row database in a second or two, but if not well designed, could take 20 or more seconds.
In the end, if its working now, just go with it! If you have the time and want to play with a new design, go ahead, but please make sure you don't try anything on the live database; make a new database for your redesign efforts.
|
|
|
|
|
I try to update or insert a record in MS SQL Server 2000 sp3 from C# using the following SQL "update products set ProductName='" + txt.Text + "' where productid=1". In the txt.text I type a phrase in various languages like english, spanish, french and greek. What I get in the database is just garbage. However if I type this directly in the SQL Enteprise Manager works perfectly well. This does not work in SQL Query Analyzer either. Does anybody have an idea what am I missing?
Nick
|
|
|
|