मैंने नीचे दिए गए कोड को चलाया कि अदनान ने कल रात मेरी मदद की (बहुत बहुत धन्यवाद अदनान)।

मूल रूप से, कोड जांचता है कि दर्ज की जा रही राशि चेक है या नहीं। यदि यह चेक है, तो चेक वैल्यू को chckval में डालें।

यदि यह नकद है तो नकद मूल्य को कैशवैल में डालें।

अब तक यह आधा काम कर रहा है। यह चेक को चेक फील्डनाम में सम्मिलित करता है और 0 को कैश फील्डनाम में सम्मिलित करता है। यह बहुत अच्छा काम कर रहा है।

जो काम नहीं कर रहा है वह कैश फील्डनाम में कैश डालना है अगर पैसा कैश है।

यह कैश को कैश फील्डनाम में सम्मिलित करता है जैसा कि इसे करना चाहिए लेकिन यह उसी राशि को चेक फील्डनाम में भी सम्मिलित करता है। यह अच्छा नहीं है।

यदि यह नकद है और इसे नकद फ़ील्डनाम में डाला गया है, तो मैं चाहता हूं कि चेक मान 0 हो।

यहाँ नवीनतम कोड है और फिर से धन्यवाद।

For x = 1 To 5 Step 1
    dedval = Gridview1.FindControl("ded" & CStr(x))
    chckval = Gridview1.FindControl("chck" & CStr(x))
    chcknumval = Gridview1.FindControl("chcknum" & CStr(x))
    checkboxval = Gridview1.FindControl("chckBox" & CStr(x))
    onetimeval = Gridview1.FindControl("onetime" & CStr(x))
    multival = Gridview1.FindControl("multi" & CStr(x))
    If chckval.Text <> "" And Not checkboxval.Checked Then
        cashval = DirectCast(Gridview1.FindControl("chck" & CStr(x)), TextBox).Text
    Else
        chckval = Gridview1.FindControl("chck" & CStr(x))
    End If
    If dedval.Text <> "-1" And donatechoice.SelectedItem.Value <> "No" Then
        sql += "INSERT INTO employee_ded_amts (employee_id, charity_code, check_amt, chcknum, one_time, bi_weekly, cash, donate_choice, date_stamp) "
        sql += "VALUES ('" & Replace(employee_idLabel.Text, "'", "''") & "','" & Replace(dedval.SelectedValue, "'", "''") & "','" & Replace(chckval.Text, "'", "''") & "','" & Replace(chcknumval.Text, "'", "''") & "','" & Replace(onetimeval.Text, "'", "''") & "','" & multival.Text & "','" & Replace(cashval, "'", "''") & "','" & Replace(donatechoice.SelectedItem.Value, "'", "''") & "','" & Replace(datestamp, "'", "''") & "');"
    End If
    If donatechoice.SelectedItem.Value = "No" Then
        x = 6
        sql += "INSERT INTO employee_ded_amts (employee_id, charity_code, check_amt, chcknum, one_time, bi_weekly, cash, donate_choice, date_stamp) "
        sql += "VALUES ('" & Replace(employee_idLabel.Text, "'", "''") & "','" & Replace(dedval.SelectedValue, "'", "''") & "','" & Replace(chckval.Text, "'", "''") & "','" & Replace(chcknumval.Text, "'", "''") & "','" & Replace(onetimeval.Text, "'", "''") & "','" & Replace(multival.Text, "'", "''") & "','" & Replace(cashval, "'", "''") & "','" & Replace(donatechoice.SelectedItem.Value, "'", "''") & "','" & Replace(datestamp, "'", "''") & "');"
    End If
Next

मुझे लगता है कि इसमें कुछ समस्या है

IF chckval.Text <> "" And Not checkboxval.Checked Then

स्टेटमेंट

0
Kenny 9 सितंबर 2011, 07:01
FYI करें, देखें meta.stackexchange.com/questions/2950/…। इसके अलावा, FYI करें, यह एक मंच नहीं है।
 – 
John Saunders
9 सितंबर 2011, 07:08
शायद यह codereview.stackexchange.com पर होना चाहिए?
 – 
DaveK
9 सितंबर 2011, 19:23
आपका कोड ऐसा लगता है कि यह SQL इंजेक्शन हमलों के लिए खुला है। आपको अपने एसक्यूएल स्टेटमेंट्स को पैरामीटर करना देखना चाहिए।
 – 
Doug Chamberlain
9 सितंबर 2011, 20:56

1 उत्तर

सबसे बढ़िया उत्तर

============

अद्यतन

इस लाइन को निम्नानुसार बदलने का प्रयास करें यदि कैशवाल एक स्ट्रिंग प्रकार है,

 cashval = DirectCast(fvEmp.FindControl("chck" & CStr(x)),TextBox).Text;

मुझे पता चला कि केनी चीज FindControl रिटर्न कंट्रोल टाइप है जिसे टेक्स्टबॉक्स प्रकार में परिवर्तित करने की आवश्यकता है यदि यह टेक्स्टबॉक्स नियंत्रण है और फिर आप स्ट्रिंग प्राप्त करने के लिए इसकी टेक्स्ट प्रॉपर्टी का उपयोग कर सकते हैं। मैंने इसे ऊपर संपादित किया। अब इसे आजमाओ।

सी # में यह इस तरह किया जाएगा।

 string cashval = ((TextBox)(fvEmp.FindControl("whatever control name"))).Text;

==============

नई अपडेट

chckval = Gridview1.FindControl("chck" & CStr(x))

केनी अब यह तीसरी पंक्ति मेरे विश्वास के कारण समस्या पैदा कर रही है। फॉर लूप से इस दूसरी लाइन को हटाने का प्रयास करें। लेकिन जब आप इस दूसरी पंक्ति को हटाते हैं तो आपको अपने chckval टेक्स्टबॉक्स प्रकार चर के लिए कुछ मान निर्दिष्ट करने की आवश्यकता होगी क्योंकि यह क्वेरी में उपयोग किए जाने पर शून्य नहीं हो सकता है। हो सकता है कि आप नया खाली टेक्स्टबॉक्स असाइन कर सकें

या

आप चेकवाल स्ट्रिंग भी बना सकते हैं जैसे आपने कैशवाल वैरिएबल स्ट्रिंग बनाई है, इससे यह आसान हो जाएगा।

लेकिन जो भी मूल्य आप checkval को देते हैं उसे इस IF कथन में निर्दिष्ट करें।

    If chckval.Text <> "" And Not checkboxval.Checked Then
     cashval = DirectCast(Gridview1.FindControl("chck" & CStr(x)), TextBox).Text
     < SET SOME VALUE FOR chckval here ... which is default value which will be used in SQL server> 
      Else
      chckval = Gridview1.FindControl("chck" & CStr(x))
1
Adnan Bhatti 9 सितंबर 2011, 21:01
धन्यवाद अदनान, वह दो कारणों से वास्तविक, राष्ट्रीय था। एक, मुझे यह तब मिला जब मेरे पास यह कैशवाल के रूप में था। 'System.Web.UI.Control' प्रकार के मान को 'स्ट्रिंग' में परिवर्तित नहीं किया जा सकता। लेकिन यह भी ध्यान दें कि chckval में .text की आवश्यकता नहीं है/नहीं है
 – 
Kenny
9 सितंबर 2011, 07:22
माफ़ कीजियेगा, मेरी गलती। यह स्ट्रिंग के रूप में डिम कैशवाल होना चाहिए क्योंकि यह मार्कअप में मौजूद नहीं है।
 – 
Kenny
9 सितंबर 2011, 07:30
यह अभी भी वही लाइन है और यह अभी भी कह रहा है "प्रकार का मान 'System.Web.UI.Control' को 'स्ट्रिंग' में परिवर्तित नहीं किया जा सकता है।" मेरी मदद करने के लिए धन्यवाद।
 – 
Kenny
9 सितंबर 2011, 07:34
त्रुटि कहती है, टेक्स्टबॉक्स एक प्रकार है और इसे अभिव्यक्ति के रूप में उपयोग नहीं किया जा सकता है। आपने कहा कि आप वीबी के साथ अच्छे नहीं हैं। यदि आप सी # के साथ अच्छे हैं और आप उस भाषा में सहायता कर सकते हैं, तो कृपया करें और मैं इसे बदलने की कोशिश करूंगा। आपको पुन: बहुत धन्यवाद।
 – 
Kenny
9 सितंबर 2011, 07:44
मुझे पता चला कि केनी चीज FindControl रिटर्न कंट्रोल टाइप है जिसे टेक्स्टबॉक्स प्रकार में परिवर्तित करने की आवश्यकता है यदि यह टेक्स्टबॉक्स नियंत्रण है और फिर आप स्ट्रिंग प्राप्त करने के लिए इसकी टेक्स्ट प्रॉपर्टी का उपयोग कर सकते हैं। मैंने इसे ऊपर संपादित किया। अब इसे आजमाओ।
 – 
Adnan Bhatti
9 सितंबर 2011, 07:48