Jump to content
Sign in to follow this  
ashiena

.net

Recommended Posts

Hye.

situasi saya camni..

saya create 2 table dalam dataset 'ds'. ("leave") and ("entitlement")

bagaimana saya nak paparkan kedua2 table ini dalam satu datadgrid?

tq in advanced..

Share this post


Link to post
Share on other sites

Cuba listkan column table Leave dan Entitlement ni, adakah hubungannya one-to-many (parent-child)?

Kalau betul ada hubungan tu, gunakan DataRelation la, mcm dlm subtajuk awak tu..

Ini DataGrid ASP.NET atau WinForm?

Share this post


Link to post
Share on other sites

em.. dua2 table ni from query yang ada join. Em... output nye...

ds.Table("leave")

LeaveName TotalDays Leave Code

Annual Leave 2 AL

ds.Table("entitleent")

LeaveName entitlement LeaveCode

Annual Leave 16 AL

nak bind ke DataGrid asp.net..

bagaimana ye?

Share this post


Link to post
Share on other sites

em.. dua2 table ni from query yang ada join. Em... output nye...

Kalau SQL tu ada join, kenapa hasil query ada 2 table.. sepatutnya hanya 1 table..

[b]ds.Table("leave")[/b]
LeaveName          TotalDays       Leave Code
Annual Leave              2                    AL

[b]ds.Table("entitleent")[/b]
LeaveName          entitlement       LeaveCode
Annual Leave                16                 AL

Mana parent mana child? Mana foreign key?

Kalau nak papar 2 table, kenapa tak gunakan 2 datagrid? Tak boleh papar 2 table dlm 1 webform datagrid, kalau winform punya datagrid boleh la..

Share this post


Link to post
Share on other sites

leave - parent

entitlement - child

foreign key - camne nak setkan? em.. link bagi kedua table is leavecode.. itu dikira foreign key?

em.. sory tak terangkan dgn jelas...

Root bagi maslah saya ialah.. saya perlu paparkan:

leavename, entitlement, daysTaken(SUM bagi setiap leavename), balance... dalam satu datagrid.

____________________________________________________

untuk dapatkan data, saya perlu gunakan 2 query:

leavename, daysTaken - dapat from sql1

entitlement - dapat from sql2

sql1

 
sql1
 SELECT LType.LeaveName, StaffLeave.totaldays,LType.LeaveCode FROM LType LEFT OUTER JOIN SELECT leavecode, SUM(totaldays) AS totaldays FROM leave WHERE staffno = '127' GROUP BY leavecode) StaffLeave ON LType.LeaveCode =StaffLeave.leavecode COLLATE SQL_Latin1_General_CP1_CI_AS

sql2
SELECT LeaveRef.Entitlement, LType.LeaveCode FROM  LeaveRef INNER JOIN LType ON LeaveRef.LeaveCode = LType.LeaveCode WHERE  LeaveRef.GradeID = '3' AND LeaveRef.yearsID = 0 AND LeaveRef.LeaveCode = 'AL'
"

saya tak dapat nak buat dalam satu sql untuk dapatkan semua data tu.. sebab tu saya guna 2 query...

__________________________________________________

mulanya saya ingatkan if output kedua2 sql ni boleh di letakkan dalam satu dataset, maka boleh la dipaparkan dalam satu datagrid... tapi since...

Tak boleh papar 2 table dlm 1 webform datagrid, kalau winform punya datagrid boleh la..

bagaimana nk paparkan data ni...?? if tk guna cara ni.. ada cara lain??

-----------------------------------------------------------------------------------

tables

Employee - staffno, name, Datejoined, GradeID

Leave - LeaveID, staffno, DatApply, dateStart, dateEnd, TotalDays,Reason, status, LeaveCode

LeaveRef - ID,GradeID,yearsID,Entitlement

leaveGrade - GradeID, GradeName

leaveLevel - leavelevel, Description

LType - LeaveCode, LeaveName

hope boleh mmbantu... Benar2 buntu...

Edited by ashiena

Share this post


Link to post
Share on other sites

Ok, sebelum tu saya nak tanya.. Adakah entitlement tu utk setiap leave atau untuk semua leave? Maksudnya adakah

(a) Seorang Staff akan entitled utk 14 hari leave semua sekali atau

(B) Seorang Staff akan ada 14 hari utl Annual Leave, 10 hari utk Compassionate Leave, etc

Saya assume (B).. saya assume sebab dlm sql2 ada LeaveRef.LeaveCode tapi ikut list of tables tu dlm LeaveRef takde column LeaveCode.. jadi ada conflict kat sini, saya ikut yg sql2..

Dan satu lagi saya assume table yg nak dipaparkan ni ialah leave record utk SEORANG Staff, betul? Bukan list utk SEMUA staff bersama dgn leave recordnya..

Ok, key penting utk menyelesaikan masalah ialah memecahkan dulu pada masalah2 kecil.. ok saya pecahkan begini:

1) Bagaimana utk ketahui leave entitlement bagi seorang staff yg mempunyai staffno = 127? Jawabnya:

SELECT LeaveCode, Entitlement
FROM LeaveRef
WHERE GradeID = (SELECT TOP 1 GradeID WHERE StaffNo = 127)
(yg ni saya assume leave entitlement berdasarkan Grade shj, tak termasuk tahun bekerja, table LeaveRef tu mengelirukan..) 2) Bagaimana utk ketahui berapa byk leave yg yg telah diambil oleh staff itu, dipecahkan mengikut leave code.. Jawabnya:
SELECT LeaveCode, SUM(TotalDays) As SumTotalDays
FROM Leave
WHERE StaffNo = '127'
GROUP BY LeaveCode
3) Dan ketiga, grand finale, bagaimana nak paparkan leave name, leave entitlement, leave taken, dan balance? Kita dah ada maklumat2 dari sql diatas, jadi gunakan balik je.. dan saya assume hubungan LeaveEntitled dgn LeaveTaken ialah 1..1 tapi mungkin juga 1..0 Jawabnya:
SELECT LeaveEntitled.LeaveCode, LeaveName, Entitlement, SumTotalDays, Entitlement-SumTotalDays As 'Balance'
FROM(
        SELECT LeaveCode, Entitlement
        FROM LeaveRef
        WHERE GradeID = (SELECT TOP 1 GradeID WHERE StaffNo = 127)
    ) As LeaveEntitled
    
    LEFT OUTER JOIN (
        SELECT LeaveCode, SUM(TotalDays) As SumTotalDays
        FROM Leave
        WHERE StaffNo = '127'
        GROUP BY LeaveCode
    ) As LeaveTaken ON LeaveEntitled.LeaveCode = LeaveTaken.LeaveCode
    
    INNER JOIN LType ON LeaveEntitled.LeaveCode = LType.LeaveCode

Betul begitu? Cuma ada 1 query shj, dan hasil query cuma 1 table shj, jadi bind mcm biasa lah..

Kalau nak guna DataRelation boleh juga, tapi saya berhenti takat ni je lah dulu..

Nak guna DataRelation leceh sikit, kena tambah DataColumn pada DataTable dan saya pun tak berapa ingat sgt..

Share this post


Link to post
Share on other sites

Yan

sql1

SELECT LType.LeaveName, StaffLeave.totaldays,LType.LeaveCode FROM LType LEFT OUTER JOIN SELECT leavecode, SUM(totaldays) AS totaldays FROM leave WHERE staffno = '127' GROUP BY leavecode) StaffLeave ON LType.LeaveCode =StaffLeave.leavecode COLLATE SQL_Latin1_General_CP1_CI_AS

nih bind pada DataGrid

So, pada ruang entitlement kat datagrid tuh, panggil function utk dapat value Entitlement, berdasarkan staffno dan LeaveCode

CheckEntitlement(container.dataitem("StaffNo"),container.dataitem("LeaveCode"))

so kat function tuh
Function CheckEntitlement(ByVal StaffNo as integer,ByVal LeaveCode as string) as Integer

'Open Satu data reader gune query nih 

sql2 = "SELECT LeaveRef.Entitlement, LType.LeaveCode FROM  LeaveRef INNER JOIN LType ON LeaveRef.LeaveCode = LType.LeaveCode WHERE  LeaveRef.GradeID = " & StaffNo & " AND LeaveRef.yearsID = 0 AND LeaveRef.LeaveCode = '" & LeaveCode & "'"

'pastu return value entitlement

End Function

tapi utk yearsID tuh, dapatkan value dari Staff tarikh mula kerja..Dapatkan tahun sahaja..

Edited by nagakeciks

Share this post


Link to post
Share on other sites

thank you 1kHz ngan hafiz..

Dua2 pn sy try.. berjaya!

dah berjaya? tahniah.. terima kasih kembali sebab eja nama saya dgn betul huruf kecil dan huruf besarnya.. jarang dpt begini..

cuma teringin nak tambah sikit:

1) Masalah besar senantiasa lebih senang diselesaikan jika ia dipecahkan pada masalah2 kecil. Skill ni sangat penting. Ada orang kata ia datang melalui pengalaman, ada orang kata melalui bakat.

2) ALWAYS indent your code if you want to live long and prosper. 1 tahun kemudian (kalau anda terus menjadi programmer) dan kena tengok balik kod tu nanti, tentu anda menyesal kalau tak indent dgn betul.

Just my humble opinion..

Share this post


Link to post
Share on other sites

Tahniah Yan...

ooo 1kHz..aku eje nama ko ngan betul, ko x cakap time kasih lak kat aku..hehe

Okies..Yan....nak komen skit pasal pendapat 1kHz tuh

1.Teramatlah setuju ngan ape yg 1kHz cakap..satu2 prob besar, kite pecahkan jadik prob2 yg kecil, lebih mudah utk kite setelkan..setel satu2..kalo ada error pun,senang nak cek kat mane..so, ingat tau pesanan 1kHz nih..sampaikan gak kat kat kawan2 yg kat opis tuh..hehe..sori aa saye xdapat datang Opis Korang..sbb dalam minggu depan akan bz gile..tapi ada masa saye singgah lak ek..

2.Betul,betul dan betul..saye sendiri masa awal keje programmer dulu, slalu x indent..kene tego ngan member yg senior (abg sascha yg baru masuk tuh)..keburukan x indent nih, kat kite dan juga orang lain..bile indent nih, senang skit nak baca..tapi utk studio.net, memang dah auto indent..so, ok aa kut..

So, ingat 2 pesanan 1kHz..sbagai rujukan utk menjadi programmer yg berjaya..

P/S : hehe..saye x join meeting ngan Big Boss smalam, tapi saye join yg arinih..huhu, korang makan bihun biasa je smalam..tadi kitorang dapat bihun Singapore..besh ooo..mm..Big Boss ada sebut pasal Sistem Intranet yg korang tengah develop nih..so buat bebetul tau..apepun yan n the gang, sori sesangat x leh nak singgah opis..saye bebetul sibuk..banyak gak nak kene buat nih..oh ye, yan sebut nama betul saye..haha..bahaya ooo..nanti ade orang x pueh ati ngan saye, tau lak nama betul saye.. tongue.gif

Take care.. n thanks 1kHz

Share this post


Link to post
Share on other sites

<!-- off-topic -->

ooo 1kHz..aku eje nama ko ngan betul, ko x cakap time kasih lak kat aku..hehe
Oh ye ke.. kalau begitu terima kasih jugak la laugh.gif

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...