|
You're having trouble debugging?
Start here[^] in order to learn how to inspect those values.
I are Troll
|
|
|
|
|
|
objDA is probably null
|
|
|
|
|
objDA is filling ds. ds is getting value.. isn't that means objDA has value ?? Or is there anyway to check the data inside objDA?
Thanks,
suchita
|
|
|
|
|
I can't tell what is wrong by seeing only some part of the relevant code.
if you think everything is correct, how come the exception?
now replace
objDA.Fill(ds);
...
by
try {
if (objDA==null) MessageBox.Show("Oh dear, objDA seems to be null");
objDA.Fill(ds);
...
} catch(Exception exc) {
MessageBox.Show("exception: "+exc.ToString());
}
|
|
|
|
|
Don't take it personal SayamiSuchi. Luc is not partial to any codeproject member. He gripes at all of us!
The mind is like a parachute. It doesn’t work unless it’s open.
|
|
|
|
|
You know pretty well an open mind is the numero uno prerequisite when debugging some code...
|
|
|
|
|
Thank you for the reply.
my code
DataColumn c1 = ds.Tables["category"].Columns["ID"]; is throwing that error. but since my dataset has values, i dont know how come that error ?
suchita
|
|
|
|
|
When I use a DataAdapter to fill a DataTable, I have to manually set the DataTable's name.
If the same logic applies, You may need to manually set the names of your DataSet tables.
The mind is like a parachute. It doesn’t work unless it’s open.
|
|
|
|
|
ok. But since i'm using join of two tables, how i'm gonna give two tables name in there ? Or is it just whatever name I'm giving for the dataset ?
suchita
|
|
|
|
|
What is your SELECT query for your data adapter?
The mind is like a parachute. It doesn’t work unless it’s open.
|
|
|
|
|
select i.ID,j.Item,j.catID from category i, item j where i.ID = j.catID
suchita
|
|
|
|
|
assuming ds is a DataSet, that line would throw a NullRefExc only if ds were null or there were no table called "category"
suggestion: split the line into many, and check what gives
if (ds==null) MessageBox.Show("ds is null");
DataTable dtCat=ds.Tables["category"];
if (dtCat==null) MessageBox.Show("dtCat is null");
DataColumn c1=dtCat.Columns["ID"];
MessageBox.Show("we got a DataColumn!");
|
|
|
|
|
System.NullReferenceException is an exception that never lies. You are obviously typing a string in wrong.
To eliminate all possible confusion, try this code:
if (!ds.Tables.Contains("category") || !ds.Tables["category"].Columns.Contains("ID"))
throw new ArgumentException("The category table or column does not exists!")
if (!ds.Tables.Contains("item") || !ds.Tables["item"].Columns.Contains("catID"))
throw new ArgumentException("The item table or column does not exists!")
DataColumn c1 = ds.Tables["category"].Columns["ID"];Line
DataColumn c2 = ds.Tables["item"].Columns["catID"];
dRel = new DataRelation("categoryItem", c1, c2);
The mind is like a parachute. It doesn’t work unless it’s open.
|
|
|
|
|
Thanks for the reply. yes you were right. it threw the argument exception. the query i used for the dataset ds is:
select i.ID,j.Item,j.catID from category i, item j where i.ID = j.catID
and the dataset is having data . Then why it gave that error ?
suchita
|
|
|
|
|
Which one threw the exception? I agree with Eddy that you need to learn how to perform effecient debugging.
Visual Studio wouldn't be worth two cents to me if it didn't have a good debugger.
The mind is like a parachute. It doesn’t work unless it’s open.
|
|
|
|
|
Thank you. Both of the argument exception is executing.
suchita
|
|
|
|
|
ok now i changed them a little bit.
string query = @"select i.ID,j.catID,j.item from category i, item j where i.ID = j.catID";
SqlCommand objCmd = new SqlCommand(query, cnx);
SqlDataAdapter objDA = new SqlDataAdapter(objCmd);
DataSet ds = new DataSet();
objDA.Fill(ds,"category");
objDA.Fill(ds, "item");
DataColumn c2 = ds.Tables["category"].Columns["ID"];
DataColumn c1 = ds.Tables["item"].Columns["catID"];
dRel = new DataRelation("category_Item", c1, c2);
ds.Relations.Add(dRel);
And here ID is the unique key for category and catID is the foreign key . But it throws error like:
These columns don't currently have unique values.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.ArgumentException: These columns don't currently have unique values.
Source Error:
Line 1231:
Line 1232: dRel = new DataRelation("category_Item", c1, c2);
Line 1233: ds.Relations.Add(dRel);
Line 1234: Repeater1.DataSource = ds;
Line 1235: Repeater1.DataBind();
But in ID is the unique key in category table and i have unique ID in item table too. I tried replacing catID by ID for the item table but in both the cases, error is same.
suchita
|
|
|
|
|
Thank you so much to all who has given interest in this topic. i got my program running now.
suchita
|
|
|
|
|
Hi everybody. I'm developing an application that sends keystrokes to another background application. The problem is that i have so send a "Alt+F", but i can't get it to work.
I'm using PostMessage:
[DllImport("User32.Dll", EntryPoint = "PostMessageA")]
private static extern bool PostMessage(IntPtr hWnd, uint msg, int wParam, int lParam);
const int VK_ALT = 0x12;
const int WM_KEYDOWN = 0x100;
PostMessage(hWnd, WM_KEYDOWN, VK_ALT, 0);
PostMessage(hWnd, WM_KEYDOWN, VK_F, 0);
The result is that the background application "see" the "F", but no the "Alt".
Anybody has any idea how to fix it or how to do this without using SendKeys? Because the background application used to be minimized.
Greetings and thanks in advance.
|
|
|
|
|
hi,
i have in mind to use the lPama for the modifier controls
PostMessage(hWnd, WM_KEYDOWN, VK_F, VK_ALT);
greetz
|
|
|
|
|
Thanks for both quick replies, but it doesn't seems to work
Is there other way to do this? I can't use sendkeys because the application is minimized.
Thanks
|
|
|
|
|
If you understand C/C++ here is an old example where I send Ctrl+f to some window (hWnd).
HWND hOldForegroundWindow = ::GetForegroundWindow();
::SetForegroundWindow(hWnd);
::ShowWindow(hWnd, SW_MAXIMIZE);
::SetFocus(hWnd);
Sleep(100);
INPUT inputs[2];
memset(&inputs[0], 0, sizeof(INPUT) * 2);
inputs[0].type = INPUT_KEYBOARD;
inputs[0].ki.wVk = VK_CONTROL;
inputs[1].type = INPUT_KEYBOARD;
inputs[1].ki.wVk = 70;
::SendInput(2, &inputs[0], sizeof(INPUT));
Sleep(100);
inputs[0].ki.dwFlags = KEYEVENTF_KEYUP;
inputs[1].ki.dwFlags = KEYEVENTF_KEYUP;
::SendInput(2, &inputs[0], sizeof(INPUT));
Maybe in your case you just have to wait some short period of time and send a KEYUP event.
Greetings
Covean
|
|
|
|
|
Hi, thanks for your reply, but the problem is that i need to do this without setting focus on the application .
I'm trying to do this with the notepad (for test), sending CTRL+F to open the "Search" window, but when i run the application, the notepad shows a "F" in the edit area. I don't know why it's ignoring the "CTRL".
|
|
|
|
|
1. I think in this case you can't use the SendKeys function, because they send the input to the window that has the focus.
Can't you just switch the focus for this very short period of time to your app and than back to the app that had the focus before?
2. Ever tried to send KEYDOWN at first (try with ALT modifier set/unset) and after you sent left ALT + some key just sent an KEYUP event?
Something like this:
PostMessage(hWnd, KEYDOWN, VK_LEFTALT);
PostMessage(hWnd, KEYDOWN, VK_F);
Sleep(100);
PostMessage(hWnd, KEYUP, VK_F);
PostMessage(hWnd, KEYUP, VK_LEFTALT);
Greetings
Covean
|
|
|
|