|
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
|
|
|
|
|
If you're passing in UNICODE characters, make sure that your column type is NCHAR, NVARCHAR or NTEXT.
Also, investigate SQL Injection Attacks[^] and the usage of parameterized queries to make your application more secure.
|
|
|
|
|
I'm using some code that returns a string[] with a list of all the servers. I want to iterate thru them on at a time and check the names against one that I already have to see if it's being found.
How do I move thru each server name in a string[]?
Thanks
Tom Wright
tawright915@yahoo.com
|
|
|
|
|
There are two ways to do it:
First is to use the IEnumerable interface of the Array:
function bool AlreadyFound(string serverThatWasFound)
{
string[] serverList = GetTheServerList();
foreach(string server in serverList)
{
if (server == serverThatWasFound)
return true;
}
return false;
}
Second is a simple loop:
function bool AlreadyFound(string serverThatWasFound)
{
string[] serverList = GetTheServerList();
for(int i=0;i<serverList.Length;i++)
{
if (servers[i]== serverThatWasFound)
return true;
}
return false;
}
/cadi
24 hours is not enough
|
|
|
|
|
Thanks the second one did it.
Tom Wright
tawright915@yahoo.com
|
|
|
|
|
Hi,
is it possible on a monthCalendar to specify multiple dates that do not fall into 1 range?
For example, every Monday in a month or Mon to Friday every week within a month?
So far I have only been able to highlight 1 range or a single date?
Any help would be greatly appreciated.
Thanks
Scotty
|
|
|
|
|
Not possible. In fact, even the normal range is broken with XP themes.
You can always write your own control.
Alex Korchemniy
|
|
|
|
|
Alex Korchemniy wrote:
Not possible.
Thats what I was afraid of. Oh well alternate solution it is then.
Thanks for replying anyway
S
|
|
|
|
|
i am creating a databound treeview but i am having trouble with my properties.
I created a collection to hold the labels. and i added to the designer.
I can create the labes, however, i do not know how can i save it;
public class MyTreeColumns // this is my class containing the string label
public class MyTreeColumnsCollection:CollectionBase // this is my collection of labels with methods for indexing, Add, Indexof, insert, remove, and contains.
in the dataTreeView class I added:
MyTreeColumnsCollection _objects = new MyTreeColumnsCollection();
[Browsable(true)]
public MyTreeColumnsCollection TreeColumns
{
get
{
return _objects;
}
set
{
_objects = value;
}
}
what i am missing?
thank you
drey
|
|
|
|
|
I think you have to mark your classes as [Serializable] .
Depending on your object structure you might have to implement the ISerializable and IDeserializationCallback interfaces. (Like Hashtable does)
/cadi
24 hours is not enough
|
|
|
|
|
that's what i was missing!
and the :
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
thank you
drey
|
|
|
|
|
Dear programer.
I wan't to use MS Word as my Email Editor Like MS OutLook
any one can help me for this subject
or help me for finding other way's
tank's a lot
rashidi
|
|
|
|
|
What exactly are you trying to code ??
Alex Korchemniy
|
|
|
|
|
Dear Alex.
I am writing a c# program.
I need to have file editor like MS word integreted with my software.
I need Editor Like RichText Editor But With MS Word capability.
Can I use MS Word API For this Perposes.
tanks.
rashidi.
|
|
|
|
|
Its possible to use the webbrowser control as an OLE container and then host Word inside of that but I recommend against it.
There are commercial components available that are fairly powerful. Some components even mimic VS.net IDE for example Syncfusion edit component. Search around on google.
Alex Korchemniy
|
|
|
|
|
I everybody !
I have a little application to manage cutomers, it works under windows. I use the .Net SDK 1.1, and Sharp Develop. My Database is in a Linux server and it is PostgreSQL 8.0. I connect to that database trough the PgSqlClient .dll (http://pgsqlclient.sourceforge.net/).
Mi big problem is that I have a field Birth Date in mi Customers table, it is Date type, and stores the birth date of each customer. When I made an sql query to the database, it sends the following exception:
"Ticks must be between DateTime.MinValue.Ticks and DateTime.MaxValue.Ticks. Parameter name: ticks"
I don't know if it is because of the PgSqlClient or becasue of DataSet.
But this only happens when in my table I have a record with BirthDate lower than year 2000, I mean 1999 or before, if my record has a year such like 2000 or above, it doesn't raise exception.
My query is something like:
StringQuery = "SELECT CustNumber, BirthDate, PIN, Name FROM Customers ORDER BY CustNumber";
and when I don't select the field BirthDate, it works perfect.
I have been searching in many forums about "ticks", but no solution yet. If someone could help, thanks a lot.
By now, thanks a lot for your attention, I hope you have a great day.
Note: Sorry for the little bad english :P
|
|
|
|
|
I am debugging a large C# program in VS 2003. When an unhandled exception occurs I receive the usual message box, but then when I dismiss the message box the debugger ALWAYS leaves me at the code
static void Main() <br />
{<br />
Application.Run(new MainForm());<br />
}
I am used to it leaving me at the line in the program where the exception occurred. Did I accidently change a debugger setting or something? I really would like it to leave me at the line where the error occurred.
Thanks!
Mark
|
|
|
|
|
No, this is usually what the debugger will do if an exception occurred in non-user code (for example, in unmanaged code). Look at the stack trace in Visual Studio, the last call you'll see is most likely a call into native code.
Tech, life, family, faith: Give me a visit.
I'm currently blogging about: Conversation With a Muslim
Judah Himango
|
|
|
|
|
Sometimes a referenced component also have Applicatoin method eg.: Inetrop.Word
Try this:
<br />
<br />
static void Main()<br />
{<br />
System.Windows.Forms.Application.Run(new MainForm());<br />
}<br />
<br />
|
|
|
|
|
Hello
I run request (with my .NET C# application):
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);<br />
request.UserAgent = "Mozilla/4.0";<br />
...<br />
WebResponse response = request.GetResponse();
then I read the response
Stream ReceiveStream = response.GetResponseStream();<br />
...<br />
String ResponseHTML = sr.ReadToEnd();
I get a page with message 'Please activate scripting'
But when I request this page with IE - I get right (wanted) page. If I disable the property 'Run script' in browser and then request the page I receive the page 'Please activate scripting'.
How to cheat the server to get wanted page with my application?
Thanks
|
|
|
|