|
hi there,
I am writing C# program which contains SQL connection several times , I learned how to connect with the traditional way , but I have read that there is a way using he data set controls provided by the .Net framework
please I need sites to describe how,
your help is appreciated ,
Thanks
There is always something to learn
|
|
|
|
|
The right way to do this is to have one method for connecting to SQL Server, inside your data layer which contains the code to call all your stored procs. The traditional way to do this badly, is to write SQL code inside every page/form that uses it. The new disasterous way is to still write SQL in the presentation layer, but use methods provided by the controls to do it.
Christian Graus - Microsoft MVP - C++
"also I don't think "TranslateOneToTwoBillion OneHundredAndFortySevenMillion FourHundredAndEightyThreeThousand SixHundredAndFortySeven()" is a very good choice for a function name" - SpacixOne ( offering help to someone who really needed it ) ( spaces added for the benefit of people running at < 1280x1024 )
|
|
|
|
|
|
Hi!
I need a simple way to round a Decimal variable to a specific number of decimals.
Any suggestions? Isn't there any function that works something like: math.round(theVariable, 2), to get 2 decimals?
/Joplinazz
|
|
|
|
|
Yes, there is, why did you guess there might me, and not look ?
Math.Round(12.42332334, 2, MidpointRounding.ToEven)
Christian Graus - Microsoft MVP - C++
"also I don't think "TranslateOneToTwoBillion OneHundredAndFortySevenMillion FourHundredAndEightyThreeThousand SixHundredAndFortySeven()" is a very good choice for a function name" - SpacixOne ( offering help to someone who really needed it ) ( spaces added for the benefit of people running at < 1280x1024 )
|
|
|
|
|
Ok someone on here mentioned to me that I should use a printDocument to create the pages I want to create. Basically I have each child that has a record of their payments they have made. Now at the end of the year for each child I want to print the record for them. At the top of the page will be our information and social security numbers for tax purposes and below that in the center of the page will be the childs name.
Then below that will be 3 columns for the payments they made which look like this:
$75 --> Paid on: 03/03/08
and so on..
Now I have it print to a print document and you can view the information on my form (printPreviewControl). But when you click print preview, the layout is totally different from the printPreviewControl on the form. Why is this? When you click print preview and the dialog pops up it is missing half the information!
Is this the way I should be doing this or is there an easier/different way? It should also print all the information for all the children, not just one child at a time. So there will be multiple pages involved ( about 5 ).
|
|
|
|
|
Ok I have changed some things, but for some reason the printpreviewControl displays what I write to the printDocument. But the PrintPreviewDialog displays nothing? I have the printpreviewdialog document set to my printDocument1
whats wrong?
|
|
|
|
|
We really need to see your code to be able to tell you what you did wrong.
Christian Graus - Microsoft MVP - C++
"also I don't think "TranslateOneToTwoBillion OneHundredAndFortySevenMillion FourHundredAndEightyThreeThousand SixHundredAndFortySeven()" is a very good choice for a function name" - SpacixOne ( offering help to someone who really needed it ) ( spaces added for the benefit of people running at < 1280x1024 )
|
|
|
|
|
I will post it, its kind of long.. but here it is:
public void getChilds(int Ccount)
{
string path = Directory.GetCurrentDirectory();
DirectoryInfo dInfo = new DirectoryInfo(path + @"\Children\");
DirectoryInfo[] dirs = dInfo.GetDirectories();
printPreviewControl1.Rows = dirs.Length;
if (dirs.Length == Ccount)
{
currentChild = "Done";
return;
}
if (currentChild != "Done")
{
switch (Ccount)
{
case 0:
currentChild = dirs[0].Name;
currentChildPath = dInfo + dirs[0].Name + @"\";
break;
case 1:
currentChild = dirs[1].Name;
currentChildPath = dInfo + dirs[1].Name + @"\";
break;
case 2:
currentChild = dirs[2].Name;
currentChildPath = dInfo + dirs[2].Name + @"\";
break;
case 3:
currentChild = dirs[3].Name;
currentChildPath = dInfo + dirs[3].Name + @"\";
break;
case 4:
currentChild = dirs[4].Name;
currentChildPath = dInfo + dirs[4].Name + @"\";
break;
case 5:
currentChild = dirs[5].Name;
currentChildPath = dInfo + dirs[5].Name + @"\";
break;
case 6:
currentChild = dirs[6].Name;
currentChildPath = dInfo + dirs[6].Name + @"\";
break;
case 7:
currentChild = dirs[7].Name;
currentChildPath = dInfo + dirs[7].Name + @"\";
break;
case 8:
currentChild = dirs[8].Name;
currentChildPath = dInfo + dirs[8].Name + @"\";
break;
case 9:
currentChild = dirs[9].Name;
currentChildPath = dInfo + dirs[9].Name + @"\";
break;
default:
currentChild = "Done";
return;
}
childCount++;
}
else
{
return;
}
}
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
getChilds(childCount);
if (currentChild == "Done")
{
e.HasMorePages = false;
return;
}
else
{
float x = e.PageBounds.Left;
float r = e.MarginBounds.Right;
float y = e.PageBounds.Top;
float b = e.PageBounds.Bottom;
float c = e.MarginBounds.Width / 2;
e.Graphics.DrawString(top[0], new Font("Arial", 10), Brushes.Blue, r, y, new StringFormat(StringFormatFlags.DirectionRightToLeft));
y += 1 + new Font("Arial", 10).GetHeight();
e.Graphics.DrawString(top[1].ToString(), new Font("Arial", 10), Brushes.Blue, r, y, new StringFormat(StringFormatFlags.DirectionRightToLeft));
y += 1 + new Font("Arial", 10).GetHeight();
e.Graphics.DrawString(top[2], new Font("Arial", 10), Brushes.Blue, r, y, new StringFormat(StringFormatFlags.DirectionRightToLeft));
y += 1 + new Font("Arial", 10).GetHeight();
e.Graphics.DrawString(top[3], new Font("Arial", 10), Brushes.Blue, r, y, new StringFormat(StringFormatFlags.DirectionRightToLeft));
y += (new Font("Arial", 10).GetHeight() * 2);
e.Graphics.DrawString(currentChild, new Font("Times New Roman", 14, FontStyle.Bold ^ FontStyle.Underline), Brushes.Red, c - (currentChild.Length / 2), y, new StringFormat());
FileStream fileOpen = new FileStream(currentChildPath + "Paid.daycare", FileMode.Open, FileAccess.Read);
StreamReader fileSR = new StreamReader(fileOpen);
string strLine = fileSR.ReadLine();
times = 0;
y += new Font("Times New Roman", 14, FontStyle.Bold ^ FontStyle.Underline).GetHeight();
centerLine = y;
rightLine = y;
while (strLine != null)
{
if (times < 31)
{
y += 2 + new Font("Arial", 12).GetHeight();
e.Graphics.DrawString(strLine, new Font("Arial", 10), Brushes.Black, x, y, new StringFormat());
strLine = fileSR.ReadLine();
times++;
}
else if (times > 30 && times < 61)
{
centerLine += 2 + new Font("Arial", 12).GetHeight();
e.Graphics.DrawString(strLine, new Font("Arial", 10), Brushes.Black, c - strLine.Length, centerLine, new StringFormat());
strLine = fileSR.ReadLine();
times++;
}
else if (times > 60 && times < 91)
{
rightLine += 2 + new Font("Arial", 12).GetHeight();
e.Graphics.DrawString(strLine, new Font("Arial", 10), Brushes.Black, r, rightLine, new StringFormat(StringFormatFlags.DirectionRightToLeft));
strLine = fileSR.ReadLine();
times++;
}
}
e.HasMorePages = true;
}
}
A lot of that is to make it print like 30 lines, then if it is over 30 lines then it prints in the center of the page, then if it is over 60 lines then it starts printing on the right side of the page.
Now my problem is, that it prints correctly to the PrintPreviewControl, but it just prints a blank page when you click print!
private void printToolStripMenuItem_Click(object sender, EventArgs e)
{
printDocument1.Print();
}
the printpreviewControl document is set to: printDocument1. The printDocument1 name is printDocument1, but why does it print a blank page when this code actually prints the information to the printDocument and it SHOWS it on the printPreviewControl?
|
|
|
|
|
Jacob Dixon wrote: y += 1 + new Font("Arial", 10).GetHeight();
I can see that you're leaking a lot of resources by doing this over and over. Why not keep a font as a member variable ?
Jacob Dixon wrote: FileStream fileOpen = new FileStream(currentChildPath + "Paid.daycare", FileMode.Open, FileAccess.Read); StreamReader fileSR = new StreamReader(fileOpen);
You also never close your files, might your test involve a printpreview then a print, and the print fails b/c the files are still open ?
Have you set a breakpoint and stepped through to try to work out what could be different when you print ? Does nothing print at all ?
Christian Graus - Microsoft MVP - C++
"also I don't think "TranslateOneToTwoBillion OneHundredAndFortySevenMillion FourHundredAndEightyThreeThousand SixHundredAndFortySeven()" is a very good choice for a function name" - SpacixOne ( offering help to someone who really needed it ) ( spaces added for the benefit of people running at < 1280x1024 )
|
|
|
|
|
I did forget those to close those but it didn't show an error. I'm just trying to figure out why it doesn't print... It actually "PRINTS" but it just prints a blank page and nothing that I drew on the printDocument.. why is it printing a blank page?
|
|
|
|
|
Ok I have fixed the leaks you were talking about and used it as a variable.
I have also closed the files after I was finished with them.
It still prints, but just prints a blank page!
How's this possible when I have written to the printDocument before asking it to print?
|
|
|
|
|
Ok I took away the printpreviewcontrol and now it prints all the information??
|
|
|
|
|
How to Export data from PrintDocument or PrintPreview Control?
I have data(Report) in PrintDocument and I want to save that in .Pdf....
-Bhavik
bhaviks@yahoo.com
Bhavik Shah
6, Gautam Appartment,
Opp. Agam mandir,
Gopipura,
Surat, Gujarat, India
9687478087
|
|
|
|
|
Hi!
I am trying to work with Channels.
I implimented the 3.5 frameWork
And the IDE does not know this pakcage:
System.Runtime.Remoting.Channels.Tcp
What am i doing wrong?
Thanks
|
|
|
|
|
Hi,
you will get Intellisense while typing TcpChannel a=new TcpChannel();
provided you have a using System.Runtime.Remoting.Channels.Tcp; line
at the top of the relevant file(s). That in turn requires you provide your project
with a reference to the .NET component called "System.Runtime.Remoting" (right
click in the solution pane and choose Add Reference...).
Luc Pattyn [Forum Guidelines] [My Articles]
This month's tips:
- before you ask a question here, search CodeProject, then Google;
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get;
- use PRE tags to preserve formatting when showing multi-line code snippets.
|
|
|
|
|
Hi!
I get this line:
Error 1 The type or namespace name 'Tcp' does not exist in the namespace 'System.Runtime.Remoting.Channels' (are you missing an assembly reference?) C:\Documents and Settings\Yossi_Tubis\My Documents\Visual Studio 2005\Projects\WindowsApplication1\WindowsApplication1\Form1.cs 9 40 WindowsApplication1
what should i do??
Thanks
|
|
|
|
|
either reread my earlier reply and pay attention to all the details,
or publish OS,VS,.NET versions and all relevant code.
Luc Pattyn [Forum Guidelines] [My Articles]
This month's tips:
- before you ask a question here, search CodeProject, then Google;
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get;
- use PRE tags to preserve formatting when showing multi-line code snippets.
|
|
|
|
|
Look here[^].
Christian Graus - Microsoft MVP - C++
"also I don't think "TranslateOneToTwoBillion OneHundredAndFortySevenMillion FourHundredAndEightyThreeThousand SixHundredAndFortySeven()" is a very good choice for a function name" - SpacixOne ( offering help to someone who really needed it ) ( spaces added for the benefit of people running at < 1280x1024 )
|
|
|
|
|
During the constructor I display a splash screen with the following code. This screen is boardless and also has no title bar. What is happening is the splash screen displays center screen followed by the main dialog screen behind the splash screen. The splash screen although is disposed, stays displayed until the main dialog screen gets a WM_PAINT (caused by clicking on the screen). This is written in C# and .NET.
How do I get the main screen to repaint after my splash screen is gone without having to click within the dialog? Am I missing something...
<br />
Thread th = new Thread(new ThreadStart(DoSplash));<br />
th.Start();<br />
Thread.Sleep(3000);<br />
th.Abort();<br />
Thread.Sleep(2000);<br />
...<br />
private void DoSplash()<br />
{<br />
Splash sp = null;<br />
try<br />
{<br />
sp = new Splash();<br />
sp.ShowDialog();<br />
}<br />
<br />
catch (ThreadAbortException)<br />
{<br />
sp.Dispose();<br />
} <br />
}<br />
Thank you,
Glenn
|
|
|
|
|
You're creating UI controls on a background thread that is MTA apartment state. That's a no-no, and will cause issues.
Before starting your thread, call
th.SetApartmentState(ApartmentState.STA);
|
|
|
|
|
Hi -- Thank you for your response. I added what you suggested, yet the splash screen still sticks around until you click in the main window. Any other ideas?
Thank you kindly,
Glenn
|
|
|
|
|
I have a project which works with it's own special files - *.gdraw.
I want to make the program when a *.gdraw file is double clicked to be loaded in the program. How is this done?
...
I read some articles and learned that i need the command line arguments. static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm(args));
}
This is the code in the Program.cs. But it doesn't seem to work.
modified on Sunday, March 9, 2008 2:26 PM
|
|
|
|
|
|
Hi all,
Whenever my ListView (let's call it ListView1) selected IDX changes, I wish to grant focus to another ListView (let's call it ListView2), but this is a bit problematic:
If I write ListView2.Focus() inside the ListView1.SelectedIndexChanged event handler, ListView1 is focused. In order to explain this behaviour, I'll mention few facts:
1. Mouse click is composed of 2 events: MouseUp and MouseDown. in each of these cases the control receives focus, if he didn't have it already.
2. whenever changing the selected line at a ListView, the event SelectedIndexChanged is called twice: once for removing the selection from the previously selected line, and once for selecting the new line.
So, the flow is as followed:
1. starting point: line 1 is selected in ListView1.
2. I'm clicking line 2 of ListView1.
3. Line 1 of ListView1 is unselected, which causes firing the event SelectedIndexChanged of ListView1. Now ListView2 receives focus.
4. Line 2 of ListView1 is unselected, which causes firing the event SelectedIndexChanged of ListView1. ListView2 already has focus.
5. Now ListView1 receives focus, since the MouseUp event (fired due to the MouseClick event).
Does anyone have a solution for focusing a control when changing a ListView selected IDX? it also bothers (due to other reasons) that the event SelectedIndexChanged is fired twice for each line selection. Verifying this behaviour can be done by using:
private void listView1_SelectedIndexChanged(object sender, EventArgs e)<br />
{<br />
System.Threading.Thread.Sleep(500);<br />
System.Media.SystemSounds.Beep.Play();<br />
}
When you'll change the selected line, 2 beeps will be heard.
Thanks and sorry for the long question!
Eyal.
|
|
|
|
|