@dovid כתב במיון תאריכים המוצגים כחודש ושנה בסדר כרונולוגי:
DATEFROMPARTS
הפונקציה DATEFROMPARTS זמינה רק מגרסת 2012.....
עריכה:
החלפתי ב:
dateadd(dd, 0, dateadd(mm, datediff(mm,0, date), 0)) as 'חודשושנה'
@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)
המכילה נתוני מכירות בצורה הזאת

אני מעוניין להחזיר תוצאה של השורה הראשונה שבה שונה המחיר > מהמחיר הקודם
ובנוסף לקבל את כל נתוני השורה המקורית של תוצאת המחיר הראשון
(ז"א לקבל את השורה הראשונה שבה נמכר המוצר לראשונה,
ואת השורה הבאה שבה נמכר המוצר במחיר שונה מהמחיר שהיה עד כה,
ואת השורה הבאה שבה נמכר המוצר במחיר שונה מהמחיר עד עכשיו - למרות שזה בעצם חזר למחירו המקורי
אני מצפה לקבל רק את השורות הצבועות בלבד)

האם ישנה דרך לבצע זאת ברמת השליפה
או שלא נותר אלא לשלוף את הנתונים ולעבור עליהם בלולאה
.
הערה: שאלתי בכוונה כ'שאלה פתוחה'
ע"מ שלא 'לזהם' את תהליך החשיבה (ואקבל תשובות על הגישות שניסיתי לבצע, ולא על עצם השאלה)
שאלת שאלה ברורה שאינני יודע עליה כרגע תשובה
@קומפיונט כתב בשליחת מייל מאפליקציית דסקטופ:
האם יש אפשרות להפיק סיסמה שתאפשר רק לשלוח הודעות ולא לקרוא את ההודעות שנשלחו?
אבל אם המטרה שלך היא ש:
@קומפיונט כתב בשליחת מייל מאפליקציית דסקטופ:
אני לא רוצה שמי שיחפור בתוכנה וימצא את הכתובת והסיסמה של החשבון יוכל לצפות בכל ההודעות שנשלחו
אולי צריך לחפש דרך להטמיע בצורה יסודית את הסיסמא באפליקציה
היות ולא פרטת באיזה פלטפורמה אתה מפתח את זה
ומשמע מדבריך שאתה הוא זה שמזין את פרטי המייל והסיסמא (ולא המשתמש)
מדוע שלא תכניס את זה בקוד המקור במקום כלשהו
איך המשתמש שחופר אמור ויכול להגיע לזה?
@הפצת-אנקי
מקווה שאני לא 'מספים' לך את השאלה המקורית
לפי דברי @yossiz
אולי ניתן לעשות מיד אחרי הלחיצה - בדיקה האם מותקן במחשב מדפסת PDF
(יוצא מתוך הנחה שכל מדפסת PDF מופיע בשם המדפסת האותיות PDF)
במידה וקיים - תדפיס ישירות כדלעיל
במידה ולא קיים - תציע למשתמש התקנה של מדפסת PDF כלשהיא
@dovid
בc#
להדפסת קובץ ספציפי אני כותב כך:
var printfiil = new ProcessStartInfo(@"d:\SH22041640.pdf");
printfiil.UseShellExecute = true;
printfiil.Verb = "print";
var process = System.Diagnostics.Process.Start(printfiil);
@ארי כתב בשליפת נתונים מאתר:
גם אם יעלו על זה יש לי תירוץ טוב...
אני מצפה ממך ליותר
גם בחלק המוסרי (אתה בעצם אומר אולי אגנוב אנשים בגביית סכום שגוי, אבל יש לי תירוץ)
ובחלק הטכני
אתה הרי יודע את נקודת היעד
זאת אומרת מקום הקבורה זה נ.צ. שאתה יודע בוודאות
מה הנתון שחסר לך לחישוב התשלום? מה קצה תחום השיפוט של עיר הנפטר
כאן מגיע לך להתאמץ קצת בחיפוש הנתון
אנקדוטה מעניינת לסיום השרשור
תראו איך האלגוריתם של גוגל פיענח את התוכן

נ.ב. אין באמור כדי ח"ו לפגוע או לרמוז משהו על מישהו
נשלח כפרט משעשע שקפץ לי תוך כדי חיפוש פתרונות נוספים לשאלה
@nigun
להניח שיש קשר בין מיקום השרת לזמן התגובה הנ"ל נראה לי מעט פחות סביר
אולם בהתחשב בעובדה שכדור הארץ סובב על צירו
ובשעות שאצלנו לילה, משום מה במדינות אחרות זה שעות יום
ובהתחשב בעובדה שנטיית האנשים לעבוד בעיקר בשעות היום
והואיל וציינת שמדובר בפלטפורמת מסחר
והואיל וציינת שיש חשיבות קריטית למהירות תגובה באלפית השניה
ומשתמע מכך שמדובר על זירת מסחר פעילה (מניות/מכירה פומבית וכד')
אציע לבדוק את ההפרשים במהירות תגובה לפי שעות הפעילות של הזירה
(ביום ראשון, שעה לפני/אחרי הסגירה - יש גם את ההפרש הנ"ל?)
במידה ואכן כך
תנסה להתחבר לאתרים אחרים (במידה וקיימים...) שמנגישים את המידע
אולי הם כתבו שאילתא טובה יותר שמנטרת את הנתונים
@avi-rz אמר בחתימה דיגיטלית על מסמך בצורה המחייבת מבחינה משפטית:
מבחינה משפטית אם זה יכול לעזור
אני משער שאתה מנסה להקביל את הפעולה הדיגיטלית לפעולה פיזית
זאת אומרת
אם הלקוח היה חותם לך פיזית עם עט על הנייר
היית רגוע
וכעת אתה מסופק איך בית המשפט יתייחס לחתימה
ננסה לתת לשניה דרור לדמיון
הלקוח חתם לך פיזית בעט על המסמך
ו.... מתכחש
(שזה בעצם הנקודה שבה אתה מקביל לדיגיטיציה)
מה אז אתה עושה?
מביא שורת גרפולוגים לבית המשפט להוכיח שהקשקוש הבלתי מזוהה שייך לאדם הנוכחי?
(לכן בהסכמים/חוזים משמעותיים/משפטיים מחייבים חתימה של עורך דין)
@dovid אמר בשליפת סיומת קובץ - לפי שם הקובץ (C#):
יש הבדל בין לדעת לבין להסיק
כלל גדול
החכמתי.
לגבי הנקודה האם להעדיף מקום אחסון על פני כח חישוב
יצאתי מתוך הנחה (ללא מקור) שהיות שגם במקום אחסון אני צריך פעולת חישוב לשליפה>הרצת הקובץ
(שגם מצריכה חישוב, היות והקובץ אצלי נשמר בתיקיית התוכנה, ויש מספר משתמשים שמחוברים דרך תיקיית רשת כאשר האות כונן לחלקם שונה, אז אוכל לשמור רק את שם הקובץ והסיומת ללא הנתיב המלא )
אז למה לא לעשות ישירות רק את פעולת החישוב?
וע"ז תשובת @dovid סדרה לי את הראש
@dovid אמר במניפולציות על שדות מחושבים ב - SQL:
אגב הCTE מיותר פה, אתה מייצר שאילתה על שאילתה, זה תת שאילתה קלאסית:
אכן,
צודק
זה רק היה דוגמא להבהרת נקודת השאלה (איך לגשת לעמודה מחושבת בגוף הselect ואיך בwhere )
(השאילתא המקורית אצלי מורכבת
[מכילה GROUP BY, ולא הסתדרתי עם הHAVING לפילטור הרצוי]
ומכילה מידע שאינו אפשרי לפרסום פה)
@רפאל
במידה ואכתוב כך
התוצאה תהיה זהה?
SqlConnection con = new SqlConnection(@"Data Source=185.2.2.25\dbt;Initial Catalog=dbn;User ID=dbus;Password=pass;Encrypt = true")