הדפסה למדפסת ב-c#

asafeven

New member
הדפסה למדפסת ב-c#

בוקר טוב, אני לומד c# ואתמול למדנו על פונקציית ההדפסה. עכשיו המורה הזכיר את אופן ההדפסה בעזרת printDocument ן printersetting . הבעיה היא שלפי איך שהוא הסביר לנו צריך כאילו להדפיס מחדש את הדף בעזרת graphics.draw ואי אפשר פשוט לתת לו טופס ולהגיד לו תדפיס. זה נשמע לי קצת לא הגיוני ורציתי לדעת אם קיימת פונקציה כמו שהזכרתי שפשוט נותנים לה טופס ומבקשים ממנה להדפיס אותו. תודה
 

adam222

New member
אני מקווה שהמורה שלך לא גולש פה...

מי יודע... אולי זה אני...
 

adam222

New member
האם אתה חושב

שהוא יעריך את זה "זה נשמע לי קצת לא הגיוני" הטלת פקפוק וספק שלא בפניו? נשמע לי כמו מעשה מאחורי הגב...
מאשר למידה אישית...
 

asafeven

New member
גם לו אמרתי שזה לא הגיוני, ואמרתי

שאני יחזור עם תשובה... אולי יש לך אחת כזאת ?
 

pagis

New member
לדעתי צריכה להיות אפשרות

אתה יכל לגשת ל API המתאים של ה windows ולנסות לבדוק איך הוא עובד, אולי דרכו אתה יכל לבצע הדפסות מסך, תבדוק.
 

asafeven

New member
שאלה נוספת בדאטאבייס

אני מנסה לבצע פעולת insert פשוטה לדאטאבייס ומשהו לא מצליח לי. הדאטאבייס הוא אקסס2000 עמודת employeeid היא int, time הוא סטרינג וaction גם כן. התכנית מתפוצצת ב- executenonquery הנה הקוד. מישהו יכול לראות מה לא בסדר ?
string time = hour.ToShortDateString() + " " + hour.ToShortTimeString(); cn = new OleDbConnection(@"Provider = Microsoft.jet.oledb.4.0; Data Source = dbEmployeeManager.mdb"); com = new OleDbCommand(); com.CommandText = @"Insert Into WorkTime(EmployeeId,Time,Action)Values(" + employeeId + ",'"+ time + "','" + action + "')"; com.Connection = cn; cn.Open(); com.ExecuteNonQuery(); cn.Close();​
 

asafeven

New member
אוקיי החלפתי, עדיין לא עובד

תודה על התגובה המהירה.
public void AddWorkHours(DateTime hour,string action,int employeeId,string databasePath) { string workTime = hour.ToShortDateString() + " " + hour.ToShortTimeString(); cn = new OleDbConnection(@"Provider = Microsoft.jet.oledb.4.0; Data Source = dbEmployeeManager.mdb"); com = new OleDbCommand(); com.CommandText = @"Insert Into WorkTime(EmployeeId,WorkHour,Action)Values(" + employeeId + ",'"+ workTime + "','" + action + "')"; com.Connection = cn; cn.Open(); com.ExecuteNonQuery(); cn.Close(); }​
 

yuval k

New member
אפשר גם היה להקיף אותה בסוגריים

מרובעות במקום לשנות את שם הטבלה
 

asafeven

New member
אני קצת הרבה מיואש - asp.net

אני כבר יומיים עובד על הדאטאגריד הזה והוא פשוט לא מוכן לעבוד, לא משנה מה ניסיתי. אני פשוט לא מצליח להכניס נתונים לתוך הדאטאטייבל. מישהו מוכן להגיד לי מה אני עושה לא נכון ?
dr = dt.NewRow(); dr[2]=3; dt.Rows.Add(dr); DataGrid1.DataSource = dt; DataGrid1.Columns[2].ItemStyle.Width= new Unit(125); DataGrid1.Columns[3].ItemStyle.Width= new Unit(200); DataGrid1.Columns[4].ItemStyle.Width= new Unit(125); DataGrid1.Columns[5].ItemStyle.Width= new Unit(900); DataGrid1.DataBind();​
התוכנית מתפוצצת כשאני מנסה להכניס קוד לדאטאטייבל כמובן ואומרת לי שהאינדקס 2 לא קיים...
 

gilad g

New member
בדוק שאכן יש 3 עמודות ב-DataTable

להזכירך, האינדקס הוא מבוסס אפס (0,1,2,...), ולא מבוסס אחד.
 

asafeven

New member
כן,הוספתי בעיצוב

שתי עמודות של כפתורים (אז זה 0,1) ועוד 3 עמודות bound
 

gilad g

New member
לא..

לא ב-DataGrid... התכוונתי ב-DataTable. האם ב-DataTable שלך יש את עמודה מס' 2?
 

asafeven

New member
אכן כן, הנה ניסיון נוסף שעשיתי

להגדרה בזמן ריצה ושוב אותה הודעת שגיאה. הנה הקוד:
DataColumn c1 = new DataColumn("Total", System.Type.GetType("System.Double")); DataColumn c2 = new DataColumn("PricePerUnit", System.Type.GetType("System.Double")); DataColumn c3 = new DataColumn("Units", System.Type.GetType("System.Int32")); DataColumn c4 = new DataColumn("Item", System.Type.GetType("System.String")); dt.Columns.Add(c1); dt.Columns.Add(c2); dt.Columns.Add(c3); dt.Columns.Add(c4); DataGrid2.DataSource = dt; dr = dt.NewRow(); dr["Total"]=3; dr["PricePerUnit"]=500; dr["Units"]=500; dr["Item"]="Balagan"; dt.Rows.Add(dr); DataGrid2.DataSource = dt; DataGrid2.Columns[0].ItemStyle.Width = new Unit(150); DataGrid2.DataBind();​
וזאת ההודעת שגיאה: Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index
 

asafeven

New member
הנה אולי התשובה אבל אני ממש לא יודע

להסביר למה זה ככה או יותר חשוב איך אפשר בכל זאת לעשות את זה. רשמתי את הקוד הזה:
dt.Columns.Add("Item",Type.GetType("System.String")); dt.Columns.Add("Units",Type.GetType("System.Double")); dt.Columns.Add("PricePerUnit",Type.GetType("System.Double")); dt.Columns.Add("Total",Type.GetType("System.Double")); dr["Total"]=0; dr["PricePerUnit"]=0; dr["Units"]=0; dt.Columns["Total"].ReadOnly = true; dt.Rows.Add(dr); DataGrid1.DataSource = dt; dr["PricePerUnit"] = DataGrid1.Columns.Count; DataGrid1.DataBind();​
כאשר כמו שרואים אני מדפיס את מס' העמודות שיש בדאטאגריד. לא משנה כמה עמודות אני מוסיף לדאטאטייבל ואח"כ מקשר את הדאטאגריד אליה מס' העמודות של הדאטאגריד נשאר תמיד 0. אני חייב להוסיף עמודות כדי לקבוע מה יה רוחב כל עמודה..מוזר מה שקורה פה.
 
למעלה