Click here to Skip to main content
15,896,154 members
Please Sign up or sign in to vote.
1.80/5 (2 votes)
See more:
I have a maskedtextbox to enter date and two buttons for retrieve and submit of date and a gridview to show the retrieve dates fron sql 2008 database and also a print button to take the print out of the dates entered my code is as follows:-

For submit button:-
string str = "insert into date values(@discharge_date)";
SqlCommand cmd;
cmd = new SqlCommand(str, con);
cmd.Parameters.AddWithValue("@discharge_date", SqlDbType.Date).Value = Convert.ToDateTime(maskedTextBox1.Text);

con.Open();
cmd.ExecuteNonQuery();
con.Close();

MessageBox.Show("Records inserted");
For retrieve button:-
dtusers.Clear();
SqlDataAdapter da = new SqlDataAdapter("select * from date where discharge_date= CONVERT(smalldatetime, '" + maskedTextBox1.Text + "', 103) ", con);


SqlCommandBuilder cmd = new SqlCommandBuilder(da);
da.Fill(dtusers);
dataGridView1.DataSource = dtusers;
dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
For Printing the gridview:-

public void Printing(string printer)
{
try
{
streamToPrint = new StreamReader(filePath);
try
{

printFont = new Font("Arial", 10);
PrintDocument pd = new PrintDocument();
pd.PrintPage += new PrintPageEventHandler(printDocument1_PrintPage);
pd.PrinterSettings.PrinterName = printer;
// Set the page orientation to landscape.
pd.DefaultPageSettings.Landscape = true;
pd.Print();
}
finally
{
streamToPrint.Close();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void printDocument1_BeginPrint(object sender,
System.Drawing.Printing.PrintEventArgs e)
{
try
{
strFormat = new StringFormat();
strFormat.Alignment = StringAlignment.Near;
strFormat.LineAlignment = StringAlignment.Center;
strFormat.Trimming = StringTrimming.EllipsisCharacter;

arrColumnLefts.Clear();
arrColumnWidths.Clear();
iCellHeight = 0;
//iCount = 0;
bFirstPage = true;
bNewPage = true;

// Calculating Total Widths
iTotalWidth = 0;
foreach (DataGridViewColumn dgvGridCol in dataGridView1.Columns)
{
iTotalWidth += dgvGridCol.Width;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
try
{
//Set the left margin
int iLeftMargin = e.MarginBounds.Left;
//Set the top margin
int iTopMargin = e.MarginBounds.Top;
//Whether more pages have to print or not
bool bMorePagesToPrint = false;
int iTmpWidth = 0;

//For the first page to print set the cell width and header height
if (bFirstPage)
{
foreach (DataGridViewColumn GridCol in dataGridView1.Columns)
{
iTmpWidth = (int)(Math.Floor((double)((double)GridCol.Width /
(double)iTotalWidth * (double)iTotalWidth *
((double)e.MarginBounds.Width / (double)iTotalWidth))));

iHeaderHeight = (int)(e.Graphics.MeasureString(GridCol.HeaderText,
GridCol.InheritedStyle.Font, iTmpWidth).Height) + 11;

// Save width and height of headers
arrColumnLefts.Add(iLeftMargin);
arrColumnWidths.Add(iTmpWidth);
iLeftMargin += iTmpWidth;
}
}
//Loop till all the grid rows not get printed
while (iRow <= dataGridView1.Rows.Count - 1)
{
DataGridViewRow GridRow = dataGridView1.Rows[iRow];
//Set the cell height
iCellHeight = GridRow.Height + 5;
int iCount = 0;
//Check whether the current page settings allows more rows to print
if (iTopMargin + iCellHeight >= e.MarginBounds.Height + e.MarginBounds.Top)
{
bNewPage = true;
bFirstPage = false;
bMorePagesToPrint = true;
break;
}
else
{
if (bNewPage)
{
//Draw Header
e.Graphics.DrawString("Discharge Summary",
new Font(dataGridView1.Font, FontStyle.Bold),
Brushes.Black, e.MarginBounds.Left,
e.MarginBounds.Top - e.Graphics.MeasureString("Discharge Summary",
new Font(dataGridView1.Font, FontStyle.Bold),
e.MarginBounds.Width).Height - 13);

String strDate = DateTime.Now.ToLongDateString() + " " +
DateTime.Now.ToShortTimeString();
//Draw Date
e.Graphics.DrawString(strDate,
new Font(dataGridView1.Font, FontStyle.Bold), Brushes.Black,
e.MarginBounds.Left +
(e.MarginBounds.Width - e.Graphics.MeasureString(strDate,
new Font(dataGridView1.Font, FontStyle.Bold),
e.MarginBounds.Width).Width),
e.MarginBounds.Top - e.Graphics.MeasureString("Discharge Summary",
new Font(new Font(dataGridView1.Font, FontStyle.Bold),
FontStyle.Bold), e.MarginBounds.Width).Height - 13);

//Draw Columns
iTopMargin = e.MarginBounds.Top;
foreach (DataGridViewColumn GridCol in dataGridView1.Columns)
{
e.Graphics.FillRectangle(new SolidBrush(Color.LightGray),
new Rectangle((int)arrColumnLefts[iCount], iTopMargin,
(int)arrColumnWidths[iCount], iHeaderHeight));

e.Graphics.DrawRectangle(Pens.Black,
new Rectangle((int)arrColumnLefts[iCount], iTopMargin,
(int)arrColumnWidths[iCount], iHeaderHeight));

e.Graphics.DrawString(GridCol.HeaderText,
GridCol.InheritedStyle.Font,
new SolidBrush(GridCol.InheritedStyle.ForeColor),
new RectangleF((int)arrColumnLefts[iCount], iTopMargin,
(int)arrColumnWidths[iCount], iHeaderHeight), strFormat);
iCount++;
}
bNewPage = false;
iTopMargin += iHeaderHeight;
}
iCount = 0;
//Draw Columns Contents
foreach (DataGridViewCell Cel in GridRow.Cells)
{
if (Cel.Value != null)
{
e.Graphics.DrawString(Cel.Value.ToString(),
Cel.InheritedStyle.Font,
new SolidBrush(Cel.InheritedStyle.ForeColor),
new RectangleF((int)arrColumnLefts[iCount],
(float)iTopMargin,
(int)arrColumnWidths[iCount], (float)iCellHeight),
strFormat);
}
//Drawing Cells Borders
e.Graphics.DrawRectangle(Pens.Black,
new Rectangle((int)arrColumnLefts[iCount], iTopMargin,
(int)arrColumnWidths[iCount], iCellHeight));
iCount++;
}
}
iRow++;
iTopMargin += iCellHeight;
}
//If more lines exist, print another page.
if (bMorePagesToPrint)
e.HasMorePages = true;
else
e.HasMorePages = false;
}
catch (Exception exc)
{
MessageBox.Show(exc.Message, "Error", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}



void maskedTextBox1_TypeValidationCompleted(object sender, TypeValidationEventArgs e)
{
if (!e.IsValidInput)
{
toolTip1.ToolTipTitle = "Invalid Date";
toolTip1.Show("The data you supplied must be a valid date in the format dd/mm/yyyy.", maskedTextBox1, 0, -20, 5000);
}
else
{
//Now that the type has passed basic type validation, enforce more specific type rules.

DateTime userDate = (DateTime)e.ReturnValue;
if (userDate > DateTime.Now)
{
toolTip1.ToolTipTitle = "Invalid Date";
toolTip1.Show("The date in this field must be smaller or equal than today's date.", maskedTextBox1, 0, -20, 5000);
e.Cancel = true;
}
}
}

private void btn_print_Click_1(object sender, EventArgs e)
{
//Open the print dialog
PrintDialog printDialog = new PrintDialog();
printDialog.Document = printDocument1;
printDialog.UseEXDialog = true;
printDocument1.DefaultPageSettings.Landscape = true;
//Get the document
if (DialogResult.OK == printDialog.ShowDialog())
{
printDocument1.DocumentName = "Test Page Print";
printDocument1.Print();
}
/*
Note: In case you want to show the Print Preview Dialog instead of
Print Dialog then comment the above code and uncomment the following code
*/

//Open the print preview dialog
//PrintPreviewDialog objPPdialog = new PrintPreviewDialog();
//objPPdialog.Document = printDocument1;
//objPPdialog.ShowDialog();

}
}
}
And Form_load events is :-


C#
maskedTextBox1.ValidatingType = typeof(System.DateTime);
           maskedTextBox1.TypeValidationCompleted += new TypeValidationEventHandler(maskedTextBox1_TypeValidationCompleted);
           // maskedTextBox1.KeyDown += new KeyEventHandler(maskedTextBox1_KeyDown);

           toolTip1.IsBalloon = true;


The result in printout is for eexample:-25/09/2013 12:00:00AM which I don't want
I don't want the time 12:00:00AM My result should be only DATE I.E 25/09/2013
why it is taking dafault time with it.
Posted
Comments
Richard MacCutchan 4-Oct-13 7:19am    
Firstly, please do not dump your entire program here, just post the part that relates to the question and indicate the line(s) causing a problem. Secondly, if you want the date printed in a specific way then use a format selector.
Richard MacCutchan 4-Oct-13 7:34am    
So you think we are going to do your work for you?
ZurdoDev 4-Oct-13 7:23am    
Why do you post so much code? Do you expect someone to load it and run it? Just format the value. What's the issue?

1 solution

Hi Alan,


Try to split the date and time.
Just like this....
C#
var result = DateTime.ParseExact(dateString,
                                 "dd/MM/yyyy HH:mm"
                                 new CultureInfo("en-US"));
string dateOutput = result.ToString().Split(' ')[0];

Now the date is in dateOutput variable, print the date alone.

Hope this helps you a bit.

Regards,
RK
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900