This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
๕. ค าสงเปลยนหวคอลมนเปนขอความอนดวย SELECT … AS รปแบบค าสง SELECT <Column> AS “New Heading” ตวอยาง SELECT hn,CONCAT(pname,fname,” “,lname) AS name ,cid FROM patient
๖. ค าสงเลอกเฉพาะขอมลทตองการดวย WHERE รปแบบค าสง SELECT <Column-name> FROM <Table-name> WHERE <condition> ตวอยาง SELECT * FROM patient WHERE nationality = “90”
๗. ค าสงเลอกเฉพาะขอมลทตองการ หลายเงอนไข (OR, AND) รปแบบค าสง SELECT <Column-name> FROM <Table-name> WHERE <condition> AND / OR <condition> ตวอยาง SELECT * FROM patient WHERE nationality = “99” AND occupation = “112” SELECT * FROM patient WHERE pttype <> “20”
๘. ค าสงเลอกขอมลทตรงตามชดขอมลดวย IN,NOT IN รปแบบค าสง SELECT <Column-name> FROM <Table-name> WHERE <Column-name> [NOT] IN (data set) ตวอยาง SELECT * FROM patient WHERE pttype in (“20”,”21”,”59”) SELECT * FROM patient WHERE pttype not in (“20”,”21”,”59”)
๙. ค าสงเลอกขอมลตามเงอนไข like รปแบบค าสง SELECT <Column-name> FROM <Table-name> WHERE <Column-name> like “%<name>%” ตวอยาง SELECT fname FROME patient WHERE like “%พร”
SELECT fname FROME patient WHERE like “พร%” SELECT fname FROME patient WHERE like “%พร%”
๑๐. ค าสงหาคาวางหรอไมวาง (Is null, Is not null, “ “) รปแบบค าสง SELECT <Column-name> FROM <Table-name> WHERE <Column-name> = “ “
SELECT <Column-name> FROM <Table-name> WHERE <Column-name> IS NULL, IS NOT NULL ตวอยาง SELECT * FROM vn_stat WHERE pdx IS NOT NULL or pdx <> or pdx =””
๑๑. ค าสงเงอนไขเพอเลอกชวงขอมล BETWEEN .. AND รปแบบค าสง SELECT <Column-name> FROM <table-name> WHERE <Column-name> BETWEEN <value1> AND <value2> ตวอยาง SELECT * FROM vn_stat WHERE vstdate BETWEEN “2011-03-01” AND “2011-03-31”
๑๒. ค าสงฟงกชนทใชในการตดคาทซ า distinct รปแบบค าสง SELECT distinct (Column-name) FROM <Table-name> ตวอยาง SELECT count (distinct (hn)) AS con FROM va_stat WHERE vstdate BETWEEN “2011-03-01” AND “2011-03-31”
ตวอยาง SELECT SUBSTR (vstdate, 1,4) AS “Year” FROM vn_stat
๑๔. ค าสงการจดกลมขอมลดวยค าสง GROUP BY รปแบบค าสง SELECT <Column-name> FROM <Table-name> GROUP BY <Column-name> ตวอยาง SELECT vn.hn,pdx,vstdate FROM vn_stat WHERE vstdate BETWEEN “2011-03-01” AND “2011-03-31” GROUP BY pdx
๑๕. ค าสงจดเรยงขอมลดวยค าสง ORDER BY รปแบบค าสง SELECT <Column-name> FROM <Table-name> ORDER BY <Column-name> [DESC][ASC] ตวอยาง SELECT vn,hn,pdx,vstdate FROM vn_stat WHERE vstdate BETWEEN “2011-03-01” AND “2011-03-31” GROUP BY pdx ORDER BY pdx DESC
๑๖. ค าสงเงอนไขของกลมดวย HAVING รปแบบค าสง SELECT <Column-name> FROM <Table-name> WHERE <condition> GROUP BY <Column-name> HAVING <condition>
ตวอยาง SELECT pttype,sum(income) AS income FROM vn_stat WHERE pttype IN(“70”,”71”,”77”) GROUP BY pttype HAVING income < 50000 ORDER BY pttype
๑๗. ค าสง SUB QUERY รปแบบค าสง SELECT Column1,Column2,Column3, … FROM [Table-name] WHERE <condition> (SELECT Column FROM [Table-name] ตวอยาง SELECT * FROM opitemrece WHERE icode IN(DELECT icode FROM drugitems) LIMIT 100
๑๘. ค าสงฟงกชนทใชหาคาขอมลทงกลม รปแบบค าสง SELECT Function <Column-name> FROM <Table-name> AVG : ใหผลลพธเปนคาเฉลยของขอมลทงกลม SUM : ใหผลลพธเปนผลบวกของขอมลทงกลม MIN : ใหผลลพธเปนคานอยทสดของขอมลทงกลม MAX : ใหผลลพธเปนคามากทสดของขอมลทงกลม COUNT : ใหผลลพธเปนจ านวนรายการของขอมลทงกลม
๑๙. เชอมTable แบบ EQUI JION รปแบบค าสง SELECT <Column-name> FROM <Table-name><Nickname>,<Table-join><Nickname> WHERE <Nickname><key> = <Nickname-Table-join><key> ตวอยาง SELECT o.icode,CONCAT(d>name,” “,d.strength),d.unitprice,o.qty FROM poitemrece o, drugitems d WHERE o.icode = d.icode
AND o.rxdate BETWEEN “2011-03-01” AND “2011-03-31”
๒๐. เชอมTable แบบ LEFT OUTER JOIN รปแบบค าสง SELECT <Column-name> FROM <Table-name><Nickname> *** เฉพาะตารางหลก LEFT OUTER JOIN <Table-join><Nickname>
ON <Nickname><key> = <Nickname-join><key> ตวอยาง
SELECT o.icode,CONCAT(d>name,” “,d.strength), d.unitprice,o.qty FROM poitemrece o LEFT OUTER JOIN drugitems d ON o.icode = d.icode WHERE o.rxdate BETWEEN “2011-03-01” AND “2011-03-31”
๒๑. เชอม Table แบบ Self Join รปแบบค าสง SELECT <Column-name> FROM <Table-name><Nickname1>, <Table-name><Nickname2> WHERE <Nickname1><key> = <Nickname2><key> ตวอยาง SELECT p1.hn,p1.fname,p1.lname,p1.birthday,p2.hn,p2.fname,p2.lname FROM p1.lname = p2.lname AND p1.hn <> p2.hn
๓. ประกาศชนดของขอมลทสรางขนใหม (Type Declaration) ตวอยาง Type Color = (red,green,blue);
๔. ประกาศตวแปรยอยในรปของ Procedure และ Function
๓. สวนค าสง : Statement ลกษณะทใช ใชในการเขยนค าสงประมวลผล รปแบบ Begin Statement_1 Statement_2 ……….. Statement_n End. ตวอยาง Program MyFirstProgram Begin ShowMessage(‘This is a Pascal Program’); End. Program MyFirstProgram Var IntegerVar : Integer; Begin IntegerVar := 3; ShowMessage(IntToStr(IntegerVar)); End. หลกการตงชอตวแปรในภาษาปาสคาล
ตวอยางค าสงวน And downto in or then Asm else inline packed to Array end interface procedure type Begin exports label program unit Case file library record until
Const for mod repeat uses Constructor function nil set var Destructor goto not shl while Div if object shr with Do implementation of string xor
๑. ใหใสวงเลบคนระหวางสองเงอนไข กบเครองหมายตรรกะ เชน x > 40 or x < 0 ใหเขยนใหมเปน (x >40) or (x < 0)
๒. เงอนไข not A and not B เขยนไดเปน not(A or B) ๓. เงอนไข not A or not B เขยนไดเปน not(A and B)
โปรแกรมแบบมเงอนไข รปแบบ If condition then Statement1 Else Statement2; ตวอยางการเปรยบเทยบ Program CheckNumber; Var A : Integer; Begin A := 10; If A >= 0 Then ShowMessage(‘A is positive number’) Else ShowMessage(‘A is nagative number’); End.
ค าสง IF ไมจ าเปนตองม ELSE ตามหลงกได ตวอยาง
If Num > 10 Then Showmessage(‘Num>10’); Compound Statement รปแบบ IF Comdition1 Then Begin ….. End // end ตวแรกไมตองมเครองหมาย; Else Begin ….. End; Nested if รปแบบ If Condition1 Then Begin …… End // end ตวแรกไมตองมเครองหมาย; Else If Condition2 Then Begin …… End Else
Begin End;
ค าสง Case รปแบบ Case selector Of Constant1 : Statement1; Constant2 : Statement2; Constant3 : Statement3; ………. ………. Constant_n : Statement_n; Else Default_Statement End; ตวอยาง Case Program MyCase; Var DayInteger : Integer; DayName : String; Begin DayInteger := 1; Case DayInteger Of 1 : DayName := ‘Monday’; 2 : DayName := ‘Tuesday’; End; End;
โปรแกรมแบบท าซ าดวยค าสง FOR รปแบบ For Control_Value := Initial_value To Final_value Do Statement; ตวอยาง โปรแกรมแบบท าซ า ดวยค าสง FOR Program For_Loop; Var Number : Integer; Begin For Number := 1 To 10 Do Begin Showmessage(‘Number = ‘+IntToStr(Number)); End; End;
ตวอยาง ค าสง FOR ซอนกน Program For_Nested; Var Number1, Number2 : Integer; Begin For Number1 := 1 To 10 Do Begin Showmessage(‘Number1 = ‘+IntToStr(Number1)); For Number2 := 1 To 3 Do Begin Showmessage(‘Number2 = ‘+IntToStr(Number2)); End; End; End; ค าสง WHILE รปแบบ While Condition do Statement; หรอ While Condition do Begin Statement1; Statement2;
………………. Increment/Decrement;
End;
ตวอยางค าสง WHILE Program Test_While; Var I : Integer; Begin I := 10; While I > 0 Do Begin ShowMessage(IntToStr(I)); I := I – 1; End; End; ค าสง REPEAT รปแบบค าสง Repeat Statement1; Statement2; ……………….. Increment/Decrement; Until Condition; ตวอยางการใช ค าสง REPEAT Program Test_Prpeat; Var I : Integer; Begin I := 10; Repeat ShowMessage(IntToStr(I)); I := I – 1; Until I < 0; End;
3. การสรางตวแปรของขอมลทตองการ 3.1 การเขยนค าสง sql เลอกขอมลทตองการใน HOSxP SQL Query ในตาราง income โดยใชค าสง SQL Query เปน select income,name from income order by income ผลทไดจากการ RUN ค าสง
3.2 คดลอกค าสงไปวางใน Calc ตามหลงฟงกชน ChangeReportSQL(sql); โดยวางแทน sql โดยใสเครองหมาย ‘’กอน ผลทได ChangeReportSQL('select income,name from income order by income'); โดยวางถดจากฟงกชนของวนท เสรจแลว ลอง compile และ preview ด จะได ทแถบ data จะม จะปรากฏชอ DBPipeline ๓.๓ ออกแบบรายงานในหนา Design โดยด าเนนการดงน - การสรางล าดบทให RUN อตโนมต โดยใชเครองชอ DBcalc คลกใตชอล าดบในแถบ Detail แลวคลกขวาท variable เลอก calculations… Calc Type เลอก Count คลก OK
- การสรางขอมลตวแปรในหมวดคาใชจาย โดยใชเครองมอทชอวา DBtext คลกวางใตหมวดคาใชจายในแถบ Detail ทแถบ DBPipeline ขางบนเลอก name
๕. คาใชจายรวม๒ โดยก าหนดคา Value := GetSQLDoubleData('select sum(sum_price) '+'from opitemrece where '+'paidst in ("01","02","03") '+'and vstdate between "'+ds1+'" and "'+ds2+'" '+'and income = "'+DBPipeline['income']+'"');
๖. คาใชจายรวม๓ (รวมดวยฟงกชน อยาลมประกาศตวแปร sum1) โดยก าหนดคา if Report.DataPipeline.bof then sum1 :=0; Value := GetSQLDoubleData('select sum(sum_price) '+ 'from opitemrece where '+'paidst in ("01","02","03") '+ 'and vstdate between "'+ds1+'" and "'+ds2+'" '+'and income = "'+DBPipeline['income']+'"');sum1 := sum1+value;
- คารวมเบกได ใชเครองมอ variable คลกขวา เลอก calculations… ก าหนดคาตวแปร Value := GetSQLDoubleData('select sum(sum_price) '+ 'from opitemrece where '+ 'paidst in ("01") '+ 'and vstdate between "'+ds1+'" and "'+ds2+' "');
- คารวมเบกไมได ก าหนดคาตวแปร Value := GetSQLDoubleData('select sum(sum_price) '+ 'from opitemrece where '+ 'paidst = "03" '+ 'and vstdate between "'+ds1+'" and "'+ds2+'" '+'and income = "'+DBPipeline['income']+'"');
- คารวมลกหน Value := GetSQLDoubleData('select sum(sum_price) '+ 'from opitemrece where '+ 'paidst = "02" '+ 'and vstdate between "'+ds1+'" and "'+ds2+'" '+'and income = "'+DBPipeline['income']+'"');
- คาผลรวมของรวม๒ (รวมดวยค าสง ตดเงอนไขบางสวนออกไป) Value := GetSQLDoubleData('select sum(sum_price) '+ 'from opitemrece where '+ 'paidst in ("01","02","03") '+ 'and vstdate between "'+ds1+'" and "'+ds2+' "');
๒.๔ สรางกลองวนทในตวรายงานทหนา Design สรางวนทโดยใชเครองมอ Variable ในการสรางกลอง คลกขวาท variable เลอก calculations… ก าหนดคาตวแปร โดยใชฟงกชน ISO2Date(d, f); ท Code Toolbox เลอก Format เลอกแถบ Language เลอกฟงกชน ISO2Date(d, f); ไปวาง แกไขค าสงเปน Value := ISO2Date(ds1, 'D MMMM EEEE')+' ถงวนท '+ ISO2Date(ds2, 'D MMMM EEEE');
๓. การสราง Pickup List เพอแสดงประเภทคนไขนด(นดทงหมด, มาตามนด, ขาดนด) 3.1 ประกาศตวแปร App : string (app จะรบคาตวแปรประเภทคนไขนด) ๓.๒ ใชฟงกชน GetPickupList(sql); ท Code Toolbox เลอก Format เลอกแถบ Language เลอกฟงกชน GetPickupList(sql); ไปวางใต begin โดยเขยนค าสง SQL ดงน app:= GetPickupList('select "คนไขนดทงหมด"
Union select "มาตามนดจรง" Union select "ไมไดมาตามนด"');
If app = 'คนไขนดทงหมด' then ChangeReportSQL('select * from oapp where nextdate between "'+ds1+'" and "'+ds2+'"')
Else If app = 'มาตามนดจรง' then
ChangeReportSQL('select * from oapp where nextdate between "'+ds1+'" and "'+ds2+'"'+' and patient_visit = "y"')
Else If app = 'ไมไดมาตามนด' then
ChangeReportSQL('select * from oapp where nextdate between "'+ds1+'" and "'+ds2+'"'+' and (patient_visit = "N" or patient_visit is null or patient_visit = "")');
Value := GetSQLStringData('select concat(pname,fname," ",lname) from patient where hn = "'+DBPipeline['hn']+'"');
๙. การสรางตวแปรแพทยผนด โดยใชเครองมอ variable คลกขวา ก าหนดคาเปน Value := GetSQLStringData('select name from doctor where code = "'+DBPipeline['doctor']+'"');
ใชเครองมอ variable คลกขวาเลอก calculations… ใสคาค าสงเปน Value :=GetSQLStringData('select concat(pname,fname," ",lname) from patient where hn="'+DBPipeline['hn']+'" ');
8. การสรางตวแปร แพทยผรกษา ใชฟงกชน GetSQLStringData(sql); ใชเครองมอ variable คลกขวาเลอก calculations… ใสคาค าสงเปน Value := GetSQLStringData('select name from doctor where code = "'+DBPipeline['dx_doctor']+'"');
9. การสรางตวแปร วนทนด ใชฟงกชน GetSQLDateData(sql); ใชเครองมอ variable คลกขวาเลอก calculations… ใสคาค าสงเปน Value :=GetSQLDateData('select nextdate from oapp where vn ="'+DBPipeline['vn']+'"');
10. การสรางขอมล อายของผรบบรการ ใชเครองมอ DBtext แลวใสคา DBPipeline เปน age