ник: Мюллер
те Вы прописываете прямо в SQLServer? А потом вызываете её выполнение их VS?
|
Да.
Вот пример как вообще нужно правильно делать:
Вот хранимая процедура
CREATE PROCEDURE _spObl
@IdCountry int
AS
SELECT DISTINCT IdObl, OblName FROM TblKlassCity WHERE IdCountry = @IdCountry
/* SET NOCOUNT ON */
RETURN
|
Далее создается пользовательский класс
(Сорри за код на C#, но лень переписывать на VB)
using System.Data.SqlClient;
public class TranspProvider
{
public TranspProvider()
{
}
public DataSet DSObl(int DDlist) //- Создается ф-ция, возвращающая объект ДатаСет. В качестве принимаемого параметра используется целое число - значение из первого комбобокса
{
ConnClass st = new ConnClass();
using (SqlConnection cn = new SqlConnection(st.strConn()))
{
SqlCommand cmd = new SqlCommand("_spObl", cn); - вызывается созданная выше хранимая процедура
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@IdCountry", DDlist); - ей передается параметр - целое число, равное значению первого комбобокса
Далее создаем и заполняем Датасет
cn.Open();
SqlDataAdapter daObl = new SqlDataAdapter(cmd);
DataSet dsObl = new DataSet();
daObl.Fill(dsObl);
cmd.Connection.Close();
cmd.Connection.Dispose();
return dsObl; - возвращаем датасет
}
}
}
|
А затем в коде прописываем
......
TranspProvider [b]TransProvider = new TranspProvider(); [/b]- создаем экземпляр TransProvider нашего пользовательского класса
........
Combo2.DataSource = TransProvider.DSObl(Convert.ToInt32 Combo1.SelectedValue)); - вызываем ф-цию DSObl из нашего пользовательского класса. В качестве входного параметра передается значение первого комбобоксаПоскольку результатом выполнения ф-ции является датасет, то делаем его источником для нашего комбобокса.
Combo2.DataTextField = "OblName";
Combo2.DataValueField = "IdObl";
Combo2.DataBind();...............
|