Jayanta Modak Ответов: 1

Покажите некоторую ошибку в VB.NET 2010 пожалуйста, помогите мне....


получите какую то ошибку я не понимаю в чем собственно проблема пожалуйста помогите мне
Я хочу показать данные, когда я на форме из меню
в таблице данных все время доступна только одна строка-это банковские реквизиты компании, которые печатаются на налоговой накладной, а значит, требуется только один банк.
если пользователь вводит на имя банка то получает некоторую ошибку что для меня добавить количество строк в хранимую процедуру

и вызовите процедуру из загрузки и зафиксируйте идентификатор 1 в метке

пожалуйста, помогите мне

0703 2018 — imgbb.com[^]

Что я уже пробовал:

Vb.net
Public Sub GetBankDetails()
        dt = lblbankid.Text
        objcombankdetails.combankid = lblbankid.Text
        ds = objcombankdetails.GetComBankDetailsBYId() 'change
        If ds.Tables(0).Rows(0).Item(0) = 1 Then
            MessageBox.Show("No Bank Name Save....")
            txtcombankname.Focus()
        End If
        If ds.Tables(0).Rows(0).Item(0) = 2 Then
            ' MessageBox.Show("Successfully add a new HSN...", "", MessageBoxButtons.OK)
        End If
        ' Label1.Text = ds.Tables(0).Rows(0).Item("combankid")
        txtcombankname.Text = If(IsDBNull(ds.Tables(0).Rows(0).Item("combankname")), "", ds.Tables(0).Rows(0).Item("combankname"))
        txtcombankacc.Text = If(IsDBNull(ds.Tables(0).Rows(0).Item("comaccnumber")), "", ds.Tables(0).Rows(0).Item("comaccnumber"))
        txtcombankIFSC.Text = If(IsDBNull(ds.Tables(0).Rows(0).Item("combankIFSC")), "", ds.Tables(0).Rows(0).Item("combankIFSC"))
        txtcombankBranch.Text = If(IsDBNull(ds.Tables(0).Rows(0).Item("combranchname")), "", ds.Tables(0).Rows(0).Item("combranchname"))
        txtcombankAddress.Text = If(IsDBNull(ds.Tables(0).Rows(0).Item("combankadd")), "", ds.Tables(0).Rows(0).Item("combankadd"))

        txtcombankname.Focus()

    End Sub

хранимая процедура
ALTER proc [dbo].[P_GetComBankDetailsBYId]-- 1
@combankid int  
         
As


DECLARE @retVal int
SELECT  @retVal = COUNT(*) FROM tbl_com_bankdetails
--WHERE COLUMN = 'Some Value'

IF (@retVal <1)
BEGIN
 select 1 /*Error*/  
return 
END
ELSE
BEGIN
 select combankname,comaccnumber,combranchname,combankadd,combankIFSC from tbl_com_bankdetails where combankid=@combankid
select 2 /*Success*/  
END 

CHill60

Конечно, ДС.Tables(0) возвращает результат запроса "select combankname,...", поэтому вы пытаетесь сравнить строку (combankname) с 1 - что недопустимо.
Использовать отладчик, чтобы проверить ds

1 Ответов

Рейтинг:
1

Maciej Los

Ваша хранимая процедура неверна!
Его следует укоротить до:

ALTER proc [dbo].[P_GetComBankDetailsBYId]
    @combankid int  
AS

SET NOCOUNT ON;

SELECT combankname,comaccnumber,combranchname,combankadd,combankIFSC
FROM tbl_com_bankdetails
WHERE combankid=@combankid

END 


Затем вам нужно получить данные из базы данных:
Dim sqlConnection1 As New SqlConnection("Your Connection String")
Dim cmd As New SqlCommand
Dim reader As SqlDataReader
DIm dt As New DataTable()

cmd.CommandText = "StoredProcedureName"
cmd.CommandType = CommandType.StoredProcedure
cmd.Connection = sqlConnection1

sqlConnection1.Open()

reader = cmd.ExecuteReader()
'get data into DataTable object
dt.Load(reader)

'populate data if there's at least one row :)
If dt.Rows.Count()>=1 Then
    'here your code
    txtcombankname.Text = dt.Rows(0).Item("combankname")
    'rest of your code
End If

sqlConnection1.Close()


Для получения более подробной информации, пожалуйста, смотрите: Как выполнить хранимую процедуру, возвращающую строки[^]


Jayanta Modak

Сэр спасибо за ответ
Я использовал главную страницу для создания функции для подключения к SQL серверу, которая для меня не используется everytime connection