|
First you could check that just after modifying a value in a control, the datatable contains the change (and the rowstate is Modified). If the modification is not reflected correctly to the datatable, your control binding isn't correctly.
If the modification is visible in the datatable, then I would suspect that you call either AcceptChanges or RejectChanges somewhere before you call the DataAdapter.Update.
Also it could be possible that you have binded a datatable to the controls, but you are actually trying to save a different datatable (a copy?).
|
|
|
|
|
|
Ok.
I'm a bit confused since in your earlier post you said that the rowstate was not modified before calling update? So are these correct observations:
- you change the data using a control
- immediately after that, your datatable contains a record with RowState = Modified
- when you come to the point where you call adapter's Update, your datatable doesn't have a record which is Modified?
Also remember that if your datatable contains more than one record, you originally updated only the row at index 0 (t_AppTableAdapter.Update(dataSet2.T_App.Rows[0]); ) maybe the record you modified using UI isn't that record. For that reason you should always call t_AppTableAdapter.Update(dataSet2.T_App);
When I wrote about the copy, I meant that is it possible that you actually have two different datatables. Changes are made to one datatable but update is called using another. But if you're sure that you have only one datatable, then this won't be an issue.
|
|
|
|
|
Here is the symptom step by step
1. i change the value of a textbox bound to column in table (this table has only 1 Row)
2. before i call the adapter's update method i can see that value has been cahnged in the dataset.
3. after i finish the update the rowstate still stays unchanged, only after i call the acceptchanges the rowstate changes but yet no affect on the *.mdb tables
the dataset is updated but not the data base itself
Have Fun
Never forget it
|
|
|
|
|
The dataadapter calls AcceptChanges when modifications are done so you don't have to call it. Based on those observations, I would guess that the dataadapter isn't trying to update the record.
Two questions:
- have you set adapter's UpdateCommand and if so, what's it like or
- do you rely on the mechanism that UpdateCommand is automatically generated
|
|
|
|
|
|
half-life wrote: i rely on the mechanism that UpdateCommand is automatically generated, Why?
In order for this to work, you must have a key column in the datatable and the select command must be created using SqlCommandBuilder or OleDbCommandBuilder. Otherwise it won't work.
So you could check that the dataset contains key definition for your datatable.
half-life wrote: ERROR [HY104] [Microsoft][ODBC Microsoft Access Driver]Invalid precision value
If this is generated by a update command you explicitely supplied, there's propably some mismatch in the columns versus parameter values.
|
|
|
|
|
|
half-life wrote: i'll try it
If you encounter problems, drop a new post.
half-life wrote: and again thank alot for the help and patience
No problem, glad to help you
|
|
|
|
|
I've got a table in database in which I store URLs that users bookmark. But before inserting a url into database, I want to make sure it's not been bookmarked before by another user. To do so, I have to search for similar forms of a url. i.e. if someone inserts www.yahoo.com, I want to avoid inserting http://yahoo.com again to prevent duplicate entries. The first thing that came to my mind as a solution, was to make urls canonical before inserting them into database, i.e. remove www from the beginning of url (if any) and add http:// to it. This seems a good workaround. The problems is, I don't like to manipulate the initial urls. I mean, If a user wants to bookmark www.yahoo.com, I don't like to insert http://yahoo.com into database for some urls, will not open if you remove www from the beginning of them.
Any idea dudes?
|
|
|
|
|
Maysam Mahfouzi wrote: The problems is, I don't like to manipulate the initial urls
If you don't want to manipulate the URL, doesn't that actually mean you store each URL just as it is (just check that the exact URL isn't found)?
Maysam Mahfouzi wrote: The first thing that came to my mind as a solution, was to make urls canonical before inserting them into database
One thing is that you could make a canonical version first, store it in parent-table and then store the unmodified url in child-table. Something like
CanonicalUrl (
CanonicalUrlId int,
Url varchar(500)
)
Url (
UrlIdId int,
CanonicalUrl int,
Url varchar(500)
)
If you want you could also build a calculated column to Url table to represent the canonical form.
However all these add extra logic to the data handling. So I'm wondering why do you want to prevent storing similar url's at all. Of course storing exactly the same may not be wise, but that's easily prevented.
|
|
|
|
|
How i recive data from a UNIX server pc by using IP and port???? Any Code Reference???
|
|
|
|
|
Hi,
well I think it doesn't matter if you are trying to connect to a unix or windows server (despite the encoding issue maybe). If you can connect to the server using TCP than I suggest using the System.Net.TcpClient. If the server has to connect to your application use the System.Net.TcpListener. If you use these names with google, you will find tons of examples using them.
Regards
Sebastian
|
|
|
|
|
I have 3 servers X, Y and Z.
X will send Trap to Y.
In Z my SNMP application is running.
Z need to receive the Trap that is sent to Y by X.
Y has no running SNMP application.
Necessary port and IP of Y is known to Z.
Is it possible to implement with your code? If possible then how.
Thanks in advance.
Sharif
|
|
|
|
|
I was having problem (see below "TROUBLE") casting int/double to generics ... This is what I intended to write,
<br />
public T RecursiveGetNextRandom<t>(T Max, T Min, List<t> lstExcludedNum) <br />
{<br />
int nNextNum = 0;<br />
double dbNextNum 0;<br />
T NextNum;<br />
<br />
nMin = Convert.ToInt32(Min);<br />
nMax = Convert.ToInt32(Max);<br />
nNextNum = oRand.Next(nMin, nMax);<br />
if(Max is double)<br />
{<br />
dbNextNum = oRand.NextDouble() * nNextNum;<br />
NextNum = (T) dbNextNum; << TROUBLE: Can't cast to <t>!<br />
} else if (Max is int) {<br />
NextNum = (T) nNextNum; << TROUBLE: Can't cast to <t>!<br />
}<br />
<br />
return NextNum;<br />
}<br />
</t></t></t></t>
I ended up writing the following ugly code:
public static object RecursiveGetNextRandom(object Max, object Min, ArrayList lstExcludedNum) <br />
{<br />
object NextNum = 0;<br />
Random oRand = new Random(Guid.NewGuid().GetHashCode());<br />
double dbMin;<br />
double dbMax;<br />
int nNextNum;<br />
<br />
if (Min == null)<br />
{<br />
Min = Int32.MinValue;<br />
}<br />
<br />
if (Max == null)<br />
{<br />
Max = Int32.MaxValue;<br />
}<br />
<br />
if (!(Max is int || Max is double))<br />
{<br />
...<br />
}<br />
<br />
dbMin = Convert.ToInt32(Min);<br />
dbMax = Convert.ToInt32(Max);<br />
SwapIfGreater(ref dbMin, ref dbMax);<br />
nNextNum = oRand.Next(Convert.ToInt32(Math.Floor(dbMin)), Convert.ToInt32(Math.Floor(dbMax)));<br />
<br />
if (Max is double)<br />
{<br />
NextNum = (double)nNextNum * oRand.NextDouble();<br />
}<br />
else if (Max is int)<br />
{<br />
NextNum = (int)nNextNum;<br />
}<br />
<br />
if (lstExcludedNum != null)<br />
{<br />
if (lstExcludedNum.Contains(NextNum))<br />
{<br />
RecursiveGetNextRandom(Max, Min, lstExcludedNum);<br />
}<br />
}<br />
<br />
return NextNum;<br />
}<br />
Any suggestion? Thanks!
dev
|
|
|
|
|
You may be able to create a generic interface, and provide an implementation for each numric type you wish to support... could be an interesting solution if it works, I haven't tried it.
There's also an excellent article here on CP[^] about generic numerics.
DaveBTW, in software, hope and pray is not a viable strategy. (Luc Pattyn)Visual Basic is not used by normal people so we're not covering it here. (Uncyclopedia)
|
|
|
|
|
|
Thanks, I have used Convert class since birth of .NET but never seen ChangeType. Good to know!
dev
|
|
|
|
|
The generic interface method does work.
IRand<int> intVersion = new Rand(); ;
Console.WriteLine(intVersion.GetNext(1, 2, new List<int>()));
IRand<long> longVersion = new Rand(); ;
Console.WriteLine(longVersion.GetNext(1, 2, new List<long>()));
public interface IRand<T>
{
T GetNext(T min, T max, List<T> exclude);
}
public class Rand : IRand<int>, IRand<long>
{
public int GetNext(int min, int max, List<int> exclude)
{
int result = 0;
return result;
}
#region IRand<long> Members
public long GetNext(long min, long max, List<long> exclude)
{
long result = 0;
return result;
}
#endregion
}
DaveBTW, in software, hope and pray is not a viable strategy. (Luc Pattyn)Visual Basic is not used by normal people so we're not covering it here. (Uncyclopedia)
|
|
|
|
|
Thanks, I just found it. This is from Darwen[^], which involves declaring <t> as IConvertible.
<br />
class RangedRandom<t><br />
where T : IConvertible<br />
{<br />
private Random _random = new Random();<br />
private double _min;<br />
private double _range;<br />
private static readonly Type ElementType = typeof(T);<br />
<br />
public RangedRandom(T min, T max)<br />
{<br />
_min = Convert.ToDouble(min);<br />
_range = Convert.ToDouble(max) - _min;<br />
}<br />
<br />
public T Next()<br />
{<br />
double rand = _random.NextDouble();<br />
double value = _min + (rand * _range);<br />
return (T)Convert.ChangeType(value, ElementType);<br />
}<br />
}<br />
</t>
dev
|
|
|
|
|
Yeah, that could be a good way of achieving what you want. I'd use a try/catch either inside the method or inside the calling method as even if T implements IConvertible, there's no guarantee that the conversion can actually be done - it depends on the class/struct's individual implementation.
DaveBTW, in software, hope and pray is not a viable strategy. (Luc Pattyn)Visual Basic is not used by normal people so we're not covering it here. (Uncyclopedia)
|
|
|
|
|
For whatever reason, when I try to set the value of the DatGridView, it doesn't stick. I have been wrecking by brain over why this is Here is my code
Basically here I am just building the data into my data gridview and then since they will be editing I want the amounts to be loaded into the dgv which is what PopulateList() does.
private void bookList_Load(object sender, EventArgs e)
{
BLL = new BooksBLL("C");
dataGridView1.DataSource = BLL.allBooks();
if (isEdit)
{
PopulateList();
}
}
private void PopulateList()
{
foreach (OrderedBook ob in order.MyOrderedBooksCollection)
{
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
if (ob.BookCode.ToString() == dataGridView1.Rows[i].Cells[2].Value.ToString())
if (ob.CopiesOrdered > 0)
dataGridView1.Rows[i].Cells[0].Value = ob.CopiesOrdered.ToString();
}
}
}
Now the interesting thing is that the value property hold and then somehow disappears when the form is loading because when i check the value immediately after a button is pressed without touching anything, it is already null. Note that the dgv works fine other than the fact that the Populate list feature won't load the values.
|
|
|
|
|
It certainly sounds like your grid's data source is somehow getting reset to its apparent starting value of BLL.allBooks(). Have you considered creating a DataSet, DataTable or DataView from BLL.allBooks and having your PopulateList method update the desired column with 'CopiesOrdered', accepting those changes, and then setting your grid data source to that object?
|
|
|
|
|
I am doing work in asp.net using c# in VS2008. I would like to give output in java script window because client dont want button and address, tool bars. so i need to design my own window for out put. I am very new in this field. I really don know which ddl i need to use and where i need to place code (in html, in page_load)
Can any one please help me in this regard?
thanks
|
|
|
|
|
Member 2842468 wrote: I am very new in this field.
Then you probably shouldn't have taken on the work.
only two letters away from being an asset
|
|
|
|