@מוטי-מן כתב בייבוא נתונים ממסד אקסס בC#:
אני חושש שהבעיה היא במספר הגירסה
תנסה לשנות ל 12
(אצלי ויזואל סטודיו 2019 + אקסס 2019 - ועובד תקין)
private string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\a.accdb";
@מוטי-מן כתב בייבוא נתונים ממסד אקסס בC#:
אני חושש שהבעיה היא במספר הגירסה
תנסה לשנות ל 12
(אצלי ויזואל סטודיו 2019 + אקסס 2019 - ועובד תקין)
private string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\a.accdb";
הפרמטר שחפשתי
זה אינדיקציה מהיכן הפעולה בוצעה
פרט מידע שאוכל לפיו לדעת/לשער
לא שהפעולה בוצעה כל פעם ממכשיר שונה
אלא גם לדעת מה זה המכשיר הנ"ל
כגון: פעולת כניסה / יציאה בשעון נוכחות
האם עדכון הנוכחות בוצע בטאבלט המותקן בדלת הכניסה למפעל
או אולי במחשב העובד אחרי שהתיישב בניחותא בכסאו אחרי כוס קפה
או בכלל שבוצע בסאמרטפון של העובד בביתו, דקה אחרי שהתעורר / שניה לפני שהולך לישון
אני לא רוצה לחסום את הפעולות במידה ולא בוצעה ממכשיר X
אלא רק רוצה לשמור את הנתון הזה
(מהשרשור יוצא שהפתרון אמור להיות באמצעות תוסף ייעודי)
רקע כללי:
מכירים את זה
שבסופרמרקט הקופאיות לא יכולות לבצע ביטול מוצר
והם צריכות את הכרטיס מנהל,
שמסתובב ביניהם הלוך ושוב ללא שום מנהל וללא שום בקרה
כך שבעצם שלמרות שמפתח התוכנה רצה להגביל את השימוש לפעולת הביטול בהרשאות
בפועל זה חסר משמעות
כי הקלדת הקוד / העברת הכרטיס לא מהווה הוכחה ואינדיקציה שאכן המנהל זה שביצע את הפעולה
כ"כ במקומות עבודה רבים
גם בהם שיש הקפדה על רמת הרשאות מותאמת בתוכנה
בדר"כ מסתובב המידע בין העובדים על פרטי זיהוי של משתמש ברמה 1
וגם אם בשוטף כל אחד עובד עם הזיהוי שלו
בשעת הצורך (ופעמים רבות ברשות המעסיק) הוא מבצע פעולות ע"י פרטי הזיהוי של מנהל המערכת
רקע משני:
במסדי נתונים - בעת הוספת /עדכון מידע
מקובל לשמור את מזהה המשתמש שביצע את הפעולה
בגלל הנ"ל
אני תמיד שומר נתון נוסף של 'שם המחשב' שבו בוצעה הפעולה
ע"מ לקבל אינדיקציה האם זה אכן העובד עצמו שביצע את הפעולה,
או עובד אחר שביצע שימוש בסיסמא ובהרשאות של העובד השני
היות ועבדתי עד היום עם תוכנה 'לוקלית'
שהיה לי גישה מלאה למחשב בעת ההתקנה,
ויכולתי לדעת ולקבל את מלוא הפרמטרים
ולבצע השוואות ואימותים מולם
לא היה לי בעיה להשיג ולקבל את כל המידע הרלוונטי
אני כעת בתהליכי מעבר לעולם הWeb
ונפשי בשאלתי
איזה 'פרמטר' מקביל ניתן לקבל מהדפדפן
שאוכל לפיו לדעת/לשער את מקור הפעולה
משהו מעבר לפרטי זיהוי ב Login
(כתובת IP לא רלוונטית למקרה דנן)
אני לא מחפש אפשרות לחסום פעולות כלשהם
ואין לי בעיה (כרגע?...) עם המציאות שלעיתים עובד ברמה 3 מבצע פעולה שפתוחה רק לרמה 1 עם שם משתמש של המנכ"ל
אלא רק רוצה לשמור את הנתון הזה ברמה הטכנית
כדי שביום פקדי, ופקדתי...
@dovid כתב בC# איך לעצור המשך ריצת קוד, ב'catch' מפונקציה המחזירה string בקלאס:
צריך להיות קוד גנרי לכל המקרים הללו שקוראים לפונקציית הyes/no
כמדומני שאני משתמש בקוד בצורה די נכונה
ועדיין כמדומני שיש לי רצון לבצע את העצירה מהפונקציה
.
.
אשתף מהקוד עצמו (בשינויים הכרחיים)
יש לי קלאס שמכיל כדלהלן:
class Class_query_for_CheckGiven_update_insert
{
SqlConnection con = new SqlConnection(Properties.Settings.Default.con);
public string CheckGiven_resul(string query)
{
string query_if_exists = "if exists (" + query + " ) begin SELECT 'yes' as 'res' end else begin SELECT 'no' as 'res' end";
string res;
try
{
if (con.State == ConnectionState.Open) { } else { con.Open(); }
SqlCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandTimeout = 0;
cmd.CommandText = query_if_exists;
res = cmd.ExecuteScalar()?.ToString();
con.Close();
}
catch (Exception ex)
{
res = "error";
if (con.State == ConnectionState.Open) { con.Close(); } else { }
//טיפול בשגיאה בצורה שאינני מעוניין לפרט כרגע פה
}
return res;
}
}
.
.
בתוכנה עצמה יש לי השמה כללית בצורה הזאת:
Class_query_for_CheckGiven_update_insert checkGiven_Update_Insert = new Class_query_for_CheckGiven_update_insert();
.
.
.
ואז באירוע הלחצן אני מיישם כך:
//בדיקה האם הנתון קיים במסד
if ("yes" == checkGiven_Update_Insert.CheckGiven_resul("select 1+1 = 5))
{
//פתיחת טופס שאלה למשתמש עם אפשריות של כן - לא
user_question_form_yes_no fyn = new User_question_form_yes_no("כאן אני מכניס טקסט משתנה לפי הצורך לתצוגת המשתמש");
fyn.ShowDialog();
if (fyn.Answer() == "no")
{
return;
}
}
// המשך פעולת הקוד
@Y-Excel-Access כתב בBLAZOR - האם זה יעיל?:
ההתרשמות שלי מלכלוך הידיים
אשמח לחוות דעתך (הסובייקטיבית)
על תחושת ה'זמן תגובה' בטעינה / פעולות
אצל המשתמש בBLAZOR
@ארי כתב בשליחת מייל מאקסס - עיצוב html:
אם פותחים את המייל בג'ימייל זה נראה מעולה.
הבעיה היא שאם אני פותח אותו בתוכנת דואר של ווינדוס
שאלה:
האם באותו הודעת מייל עצמה
כאשר אתה פותח את הההודעה בדפדן כרום/גיימיל - זה מוצג תקין
ואותה הודעה בדיוק - כאשר אתה פותח אותה באאוטלוק - זה מוצג כסינית?
במידה ואכן כך
אולי הבעיה היא במילה div
שזה CSS ולא HTML טהור
תנסה להחליף אותה
Html = "<th dir=" & Chr(34) & "rtl" & Chr(34) & ">"
Html = Html & "<th>לכבוד פלוני אלמוני</th><br>"
Html = Html & "<th>להלן קישור לפורום תחומים.</th><br>"
Html = Html & "<th><a href = ""https://tchumim.com/post/149773"">לחצו כאן למעבר לפורום.</a><br></th>"
Html = Html & "<th><br></th>"
Html = Html & "<th>תודה.<br></th>"
@dovid כתב בC# קבלת נתיב קובץ מוחלט בשימוש בכונן רשת:
במקרה שלך האייפיי לא היה בשימוש קודם לכן הוא נחשב כפעם ראשונה.
זה אומנם סטייה מהנושא
אבל זה מעניין ויכול להועיל ...
בבדיקה אצלי
יצרתי תיקייה חדשה וקובץ חדש
נכנסתי תחילה עם שם התיקייה
וינדוס לא ביקש אישורי רשת
לאחמ"כ שיניתי לכתובת אייפי - והוא ביקש (פעם ראשונה כמובן)
למרות שהוא הכיר ופתח כבר את הקובץ במיקום הנ"ל
מעניין לבדוק האם כשהוא מבקש אישורי רשת במקומות נוספים
יתכן וניתן לעשות 'קפיצת הדרך' באמצעות ה'שם המפורש'
@Y-Excel-Access כתב בטופס HTML באקסס:
קישור לאתר או פוסט המסביר
ממש תודה ענקית על התמיכה באישי
(ועל ה...)
לתועלת הציבור:
הפתרון לתעלומה הינו: שהפקד DataGridView
שומר את שמות העמודות
ולכן בטעינה חוזרת של טווח תאריכים שונה,
למרות שב DataTable זה ממוין נכון,
נותר מיקום העמודות המקוריות לא לפי הסדר הרצוי
ולכן יש לאפס את מקור הנתונים לפני טעינה חוזרת
DataGridView1.DataSource = null
@dovid כתב במיון תאריכים המוצגים כחודש ושנה בסדר כרונולוגי:
DATEFROMPARTS
הפונקציה DATEFROMPARTS זמינה רק מגרסת 2012.....
עריכה:
החלפתי ב:
dateadd(dd, 0, dateadd(mm, datediff(mm,0, date), 0)) as 'חודשושנה'
CREATE TABLE Sales
([date] datetime, [Barcode] int, [product_name] varchar(50),[GGroup] varchar(50),[stock] int, [quantity] int)
;
INSERT INTO Sales
([date] , [Barcode] , [product_name] ,[GGroup],[stock] , [quantity] )
VALUES
('2022-01-01 12:00:00', 2885, 'Cookware','microwave',25,1),
('2022-01-06 13:00:00', 2885, 'Cookware','microwave',25,2),
('2022-02-01 14:00:00', 2885, 'Cookware','microwave',25,3),
('2022-02-05 15:00:00', 2885, 'Cookware','microwave',25,4),
('2022-03-05 16:00:00', 2885, 'Cookware','microwave',25,5),
('2022-03-06 17:00:00', 2885, 'Cookware','microwave',25,6),
('2022-04-07 18:00:00', 2885, 'Cookware','microwave',25,7),
('2022-04-08 19:00:00', 2885, 'Cookware','microwave',25,8),
('2022-05-09 20:00:00', 2885, 'Cookware','microwave',25,9),
('2022-05-10 21:00:00', 2885, 'Cookware','microwave',25,10),
('2022-06-11 22:00:00', 2885, 'Cookware','microwave',25,11),
('2022-06-12 23:00:00', 2885, 'Cookware','microwave',25,12),
('2022-07-13 11:00:00', 2885, 'Cookware','microwave',25,13),
('2022-07-14 10:00:00', 2885, 'Cookware','microwave',25,14),
('2022-01-01 12:00:00', 3665, 'Appliances','refrigerator',12,15),
('2022-01-06 13:00:00', 3665, 'Appliances','refrigerator',12,16),
('2022-02-01 14:00:00', 3665, 'Appliances','refrigerator',12,17),
('2022-02-05 15:00:00', 3665, 'Appliances','refrigerator',12,18),
('2022-03-05 16:00:00', 3665, 'Appliances','refrigerator',12,19),
('2022-03-06 17:00:00', 3665, 'Appliances','refrigerator',12,20),
('2022-04-07 18:00:00', 3665, 'Appliances','refrigerator',12,21),
('2022-04-08 19:00:00', 3665, 'Appliances','refrigerator',12,22),
('2022-05-09 20:00:00', 3665, 'Appliances','refrigerator',12,23),
('2022-05-10 21:00:00', 3665, 'Appliances','refrigerator',12,24),
('2022-06-11 22:00:00', 3665, 'Appliances','refrigerator',12,25),
('2022-06-12 23:00:00', 3665, 'Appliances','refrigerator',12,26),
('2022-07-13 11:00:00', 3665, 'Appliances','refrigerator',12,27),
('2022-07-14 10:00:00', 3665, 'Appliances','refrigerator',12,28),
('2022-01-01 12:00:00', 2885, 'Cookware','microwave',25,1),
('2022-01-06 13:00:00', 2885, 'Cookware','microwave',25,2),
('2022-02-01 14:00:00', 2885, 'Cookware','microwave',25,3),
('2022-02-05 15:00:00', 2885, 'Cookware','microwave',25,4),
('2022-03-05 16:00:00', 2885, 'Cookware','microwave',25,5),
('2022-03-06 17:00:00', 2885, 'Cookware','microwave',25,6),
('2022-04-07 18:00:00', 2885, 'Cookware','microwave',25,7),
('2022-04-08 19:00:00', 2885, 'Cookware','microwave',25,8),
('2022-05-09 20:00:00', 2885, 'Cookware','microwave',25,9),
('2022-05-10 21:00:00', 2885, 'Cookware','microwave',25,10),
('2022-06-11 22:00:00', 2885, 'Cookware','microwave',25,11),
('2022-06-12 23:00:00', 2885, 'Cookware','microwave',25,12),
('2022-07-13 11:00:00', 2885, 'Cookware','microwave',25,13),
('2022-07-14 10:00:00', 2885, 'Cookware','microwave',25,14),
('2023-01-01 12:00:00', 3665, 'Appliances','refrigerator',12,15),
('2023-01-06 13:00:00', 3665, 'Appliances','refrigerator',12,16),
('2023-02-01 14:00:00', 3665, 'Appliances','refrigerator',12,17),
('2023-02-05 15:00:00', 3665, 'Appliances','refrigerator',12,18),
('2023-03-05 16:00:00', 3665, 'Appliances','refrigerator',12,19),
('2023-03-06 17:00:00', 3665, 'Appliances','refrigerator',12,20),
('2023-04-07 18:00:00', 3665, 'Appliances','refrigerator',12,21),
('2023-04-08 19:00:00', 3665, 'Appliances','refrigerator',12,22),
('2023-05-09 20:00:00', 3665, 'Appliances','refrigerator',12,23),
('2023-05-10 21:00:00', 3665, 'Appliances','refrigerator',12,24),
('2023-06-11 22:00:00', 3665, 'Appliances','refrigerator',12,25),
('2023-06-12 23:00:00', 3665, 'Appliances','refrigerator',12,26),
('2023-07-13 11:00:00', 3665, 'Appliances','refrigerator',12,27),
('2023-07-14 10:00:00', 3665, 'Appliances','refrigerator',12,28)
;
אפשרות א:
select year (s.date) as year ,month (s.date) as month ,s.product_name ,s.Barcode ,s.GGroup ,s.stock ,SUM (s.quantity) AS quantity
from Sales s
group by year(s.date),month(s.date) ,s.product_name ,s.Barcode ,s.GGroup ,s.stock
אפשרות ב:
select CONVERT( nvarchar,month(date)) + '/' +CONVERT( nvarchar, year(date)) as 'date' ,s.product_name ,s.Barcode ,s.GGroup ,s.stock ,SUM (s.quantity) AS quantity
from Sales s
group by year(s.date),month(s.date) ,s.product_name ,s.Barcode ,s.GGroup ,s.stock
התוצאה הרצויה:
(נ.ב. לא מצאתי עורך קוד אונליין להעלות דרכו את הדוגמא
sqlfiddle לא תומך בחלק מהפונקציות)
כמדומני שאם תחלק את השאלה לשניים
עבורך - בחיפוש בגוגל
וגם כאן בפורום כשני נושאים נפרדים
תוכל להגיע למטרה
איך 'לקרוא' ולתפעל באקסס מידע מקובץ טקסט הקיים במיקום X
איך לשלוח / מה התחביר בPHP (?) פוסט, שיוריד את הקובץ במיקום X
(בהגדרות המרכזייה אמור להשלח פוסט הנ"ל עם פרטי השיחה שהתקבלו, ואותו אתה צריך לדאוג שיירד כל פעם אצלך במיקום קבוע>ולדרוס את הקובץ הקיים)
היות ובקשת גם 'מושגים'
וטרם פורסם תגובה לחלק של 'קבלת השיחות'
אנסה לעזור
האקסס והמרכזייה זה בעצם שני תהליכים נפרדים
שאתה בעצם רוצה שהאקסס ידע ויקבל כאשר נכנסת שיחה בתהליך של המרכזייה
הדרך הכי יעילה וטובה זה ליצור 'מאזין' באקסס
תהליך שמקשיב כל הזמן למרכזייה
ואז בעת קבלת שיחה, אתה יכול 'לתפוס' את קבלת השיחה בצורה טהורה עם הפרטים,
ולהשתמש בזה, כגון: הקפצת טופס עם פרטי הלקוח
(בדר"כ בעלי המרכזייה לא מאפשרים להאזין ישירות, אבל מאפשרים שליחת POST ואז יש ליצור אתר ייעודי שמקבל את הפוסטים הנ"ל, ולהאזין אליו)
אינני בקיא, ואינני יודע האם קיים ספריה/קוד לבצע מאזין מאקסס
ישנה דרך נוספת
מעט יותר פרימיטיבית
אינני יודע על מאחורי הקלעים - אבל ראיתי מספר עמותות שככה זה עובד במוקד אצלם
כאשר שיחה נכנסת והשלוחה מצלצלת
ניתן ללחוץ על לחצן באקסס, ואז עולה פרטי הלקוח
(אם הבנתי נכון, בעת קבלת שיחה, יורד קובץ טקסט מקומי למיקום X עם פרטי השיחה)
אתחיל עם המושגים
זה מתחלק ל:
הוצאת שיחות:
פעולת הוצאת שיחה זה החלק הקל והפשוט (Click-To-Call)
כמו שניתן להוציא שיחה ישירות דרך שורת הכתובת בדפדפן (לפי הפרמטרים הרצויים)
אתה שם באירוע הלחצן - הרצה של הURL
(ללא פתיחת הדפדפן, ולקבל קלט תגובה)
קוד vba מאת chat.openai
Sub SendRequest()
' צור אובייקט XMLHTTP חדש
Dim xmlHttp As Object
Set xmlHttp = CreateObject("Microsoft.XMLHTTP")
' הגדר את הכתובת URL שאליה יישלח הבקשה
Dim url As String
url = "https://www.example.com"
' שלח בקשת GET לכתובת ה URL
xmlHttp.Open "GET", url, False
xmlHttp.send
' הצג את תוכן התגובה מהשרת
Debug.Print xmlHttp.responseText
' השתק את האובייקט XMLHTTP
Set xmlHttp = Nothing
End Sub
.
.
.
@yossiz כתב בזיהוי לחיצת קליק ימני / קליק שמאלי בעכבר:
תוכנה נחמדה לארכיאולוגיה בינארית
לא הצלחתי באמצעותה להגיע לקוד
אבל לפחות עזר לי להבין מדוע תוכנה אחרת לא עבדה לי בכלים האחרים
@yossiz
א. עשיתי מראש 'חפירות ארכאולוגיות'....
ב. פעם בפגישה בבית תוכנה עשיתי סיור במחלקת פיתוח
@מנחם כתב בהורדת נתונים מהבנק דרך github > israeli-bank-scrapers:
או שיש לכם רעיון אחר איך להתחבר לבנק אוטומטי ולהוריד כל יום את הקובץ הנכון
אם פתרון בתשלום גם יעזור
אני משתמש בשירות של ביזיבוקס
ומבצע דרכם יבוא ברמת יומית לחשבשבת
ומאוד מרוצה
נ.ב. אם הצלחת להגיע לפלט כלשהו
שווה לך להשקיע ולקבל את התוצאות לבד
זה יתן לך הרבה יותר כלים וגמישות בייבוא
ברשותי טבלת נתונים (SQL - SSMS)
המכילה נתוני מכירות בצורה הזאת
אני מעוניין להחזיר תוצאה של השורה הראשונה שבה שונה המחיר > מהמחיר הקודם
ובנוסף לקבל את כל נתוני השורה המקורית של תוצאת המחיר הראשון
(ז"א לקבל את השורה הראשונה שבה נמכר המוצר לראשונה,
ואת השורה הבאה שבה נמכר המוצר במחיר שונה מהמחיר שהיה עד כה,
ואת השורה הבאה שבה נמכר המוצר במחיר שונה מהמחיר עד עכשיו - למרות שזה בעצם חזר למחירו המקורי
אני מצפה לקבל רק את השורות הצבועות בלבד)
האם ישנה דרך לבצע זאת ברמת השליפה
או שלא נותר אלא לשלוף את הנתונים ולעבור עליהם בלולאה
.
הערה: שאלתי בכוונה כ'שאלה פתוחה'
ע"מ שלא 'לזהם' את תהליך החשיבה (ואקבל תשובות על הגישות שניסיתי לבצע, ולא על עצם השאלה)
שאלת שאלה ברורה שאינני יודע עליה כרגע תשובה
@קומפיונט כתב בשליחת מייל מאפליקציית דסקטופ:
האם יש אפשרות להפיק סיסמה שתאפשר רק לשלוח הודעות ולא לקרוא את ההודעות שנשלחו?
אבל אם המטרה שלך היא ש:
@קומפיונט כתב בשליחת מייל מאפליקציית דסקטופ:
אני לא רוצה שמי שיחפור בתוכנה וימצא את הכתובת והסיסמה של החשבון יוכל לצפות בכל ההודעות שנשלחו
אולי צריך לחפש דרך להטמיע בצורה יסודית את הסיסמא באפליקציה
היות ולא פרטת באיזה פלטפורמה אתה מפתח את זה
ומשמע מדבריך שאתה הוא זה שמזין את פרטי המייל והסיסמא (ולא המשתמש)
מדוע שלא תכניס את זה בקוד המקור במקום כלשהו
איך המשתמש שחופר אמור ויכול להגיע לזה?