Jadi dengan fungsi ini, si Perawat bisa melihat Bed yang mana-mana saja yang sedang digunakan dan sedang dibersihkan.
Kira-kira begini bentuk nya.
Bed Information |
Kalo dulu, aku buat semua kondisi nya dimana "stored procedure" dengan menggunakan IF CONDITION.
Kebayang kan, harus membuat beberapa kombinasi kemungkinan yang harus ditulis didalamnya. -___-
Dan solusinya adalah :
1. Pada saat si User menekan button Searh, tampung semua parameter yang TIDAK bernilai NULL dalam sebuah ArrayList.
Kira-kira seperti ini :
if (class_name.Equals("") || class_name.Equals(null))
{
}
else
{
sClass = "CR.Class_Id = '" + class_name +"'";
Query.Add(sClass);
}
if (room_name.Equals("") || room_name.Equals(null))
{
}
else
{
sRoom = "CR.Room_Id = '" + room_name +"'";
Query.Add(sRoom);
}
if (bed_name.Equals("") || bed_name.Equals(null))
{
}
else
{
sBed = "BR.Bed_Id = '" + bed_name +"'";
Query.Add(sBed);
}
if (!dStartDate.Equals(null))
{
string startdate = "DATEADD(day, DATEDIFF(day, 0, T.Start_Date), 0)>= '" + dStartDate.ToString() + "'";
Query.Add(startdate);
}
if (!dEndDate.Equals(null))
{
string enddate = "DATEADD(day, DATEDIFF(day, 0, T.End_Date), 0)<= '" + dEndDate.ToString() +"'";
Query.Add(enddate);
}
model = bed.GetDataInformation(Query);
2. Perlu diperhatikan pada saat menambahkan ke ArrayList, saya sudah set terlebih dahulu bagaimana kondisi nya.
Selanjutnya, kirim ArraryList tadi ke sebuah Model.
Kira-kira seperti ini :
public DataSet GetDataInformation(ArrayList Arr)
{
conn = objDBConnector.GetConn();
cmd = objDBConnector.GetCommand();
string sClass = null;
string sRoom = null;
string sBed = null;
DateTime? date = null;
int i = 0;
string text = null;
string temp = null;
string query = null;
string conca = "AND ";
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "usp_BedQuery#GetData1";
for (i = 0; i <= Arr.Count - 1; i++)
{
text = Arr[i].ToString();
temp = temp + text + ' ';
if ( i < Arr.Count - 1)
{
temp = temp + conca;
}
}
query = temp;
cmd.Parameters.AddWithValue("@query", query);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
da.Fill(dataset);
return dataset;
}
3. Setelah langkah 1 dan 2, sekarang tinggal bagaimana Stored Procedure kita menerima parameter String yang kita lempar melalui model.
Kira-kira seperti ini :
ALTER PROC [dbo].[usp_BedQuery#GetData1]
(
@query varchar(500)
)
AS
BEGIN
SET NOCOUNT ON
exec ('SELECT Distinct CR.Class_Id, C.Class_Name,CR.Room_Id, R.Room_Name, BR.Bed_Id, B.Bed_Name, T.Status_Bed_Id,SB.Status_Bed_Name, T.Start_Date, T.End_Date
from M_Class C
join Map_Class_Room CR
on CR.Class_Id = C.Class_Id
join M_Room R
on CR.Room_Id = R.Room_Id
join Map_Bed_Room BR
on CR.Room_Id = BR.Room_Id
join M_Bed B
on BR.Bed_Id = B.Bed_Id
join Map_Bed_Status BS
on B.Bed_Id = BS.Bed_Id
join T_Bed_Management T
on CR.Class_Id = T.Class_Id
join M_Status_Bed SB
on T.Status_Bed_Id = SB.Status_Bed_Id
where ' +@query)
END
4. Dengan seperti ini, kita gak perlu buat kombinasi-kombinasi dengan menggunakan IF lagi di stored procedure.
Semoga bisa membantu :) :)
Fighting :)
White
No comments:
Post a Comment