He creado un función buscar en postgres:
Código SQL:
Ver original
CREATE OR REPLACE FUNCTION like_cat(_nom_cat CHARACTER) RETURNS SETOF categoria AS $BODY$ DECLARE _select categoria; BEGIN FOR _select IN SELECT * FROM categoria WHERE nom_cat ilike '%'||_nom_cat||'%' loop RETURN NEXT _select; END loop; END;$BODY$ LANGUAGE plpgsql VOLATILE COST 100 ROWS 1000;
y hago lo siguiente; lo estoy haciendo en capas:
I.- CAPA ACCESO DATOS
1.1.- Clase CategoriaAD
Código vb:
Ver original
Imports System.Data Imports Npgsql Imports NpgsqlTypes imports EntidadNegocio Public Class CategoriaAD Private conn As New NpgsqlConnection Private comando As New NpgsqlCommand #Region "Cadena de conexion" Public Sub New() Dim Objconexion As New conexion conn = Objconexion.abrir comando.Connection=conn End Sub #End Region #Region "Función Buscar" Public Function buscar(ByVal ObjCategoriaEN As CategoriaEN) Dim reader As NpgsqlDataReader Dim categoria As New CategoriaEN Try conn.Close() conn.Open() comando.CommandType=CommandType.StoredProcedure comando.CommandText="like_cat" Dim _nom_cat As New NpgsqlParameter("_nom_cat",NpgsqlTypes.NpgsqlDbType.Varchar) _nom_cat.Value=ObjcategoriaEN.gnom_cat _nom_cat.Direction=ParameterDirection.Input comando.Parameters.Add(_nom_cat) comando.ExecuteNonQuery Catch ex as Exception MsgBox(ex.Message, MsgBoxStyle.Critical, ex.Source) Finally conn.Close() conn.ClearAllPools End Try End Function #End Region
2.- CAPA EntidadNegocio
2.1.- Clase CategoriaEN
Código vb:
Ver original
Public Class CategoriaEN Private idcat As Integer Private nom_cat As String Private desc_cat As String '-------------------------- Public Property gidcat() Get Return idcat End Get Set(ByVal value) idcat=value End Set End Property '-------------------------- Public Property gnom_cat() Get Return nom_cat End Get Set(ByVal value) nom_cat=value End Set End Property '-------------------------- Public Property gdesc_cat() Get return desc_cat End Get Set(ByVal value) desc_cat=value End Set End Property '-------------------------- End Class
3.- CAPA LogicaNegocio
3.1.- CategoriaLN
Código vb:
Ver original
Imports AccessoDatos imports EntidadNegocio Public Class CategoriaLN Private ObjCategoriaAD As CategoriaAD Public Sub New() ObjCategoriaAD=New CategoriaAD End Sub #Region "Establecer conexion con la función buscar" Public Function buscar(ByVal ObjCategoriaEN As CategoriaEN) ObjCategoriaAD.buscar(ObjCategoriaEN) End Function #End Region
4.- CAPA Presentacion
4.1.- Formulario listcategoria
Código vb:
Ver original
Imports System.Data imports System.Windows.Forms.CheckState Imports EntidadNegocio Imports LogicaNegocio Public Partial Class listcategoria Sub Button1Click(sender As Object, e As EventArgs) ObjCategoriaEN=New CategoriaEN ObjCategoriaLN=New CategoriaLN ObjCategoriaEN.gnom_cat=Ltrim(Rtrim(txtbuscar.Text)) ObjCategoriaLN.buscar(ObjCategoriaEN) dgwlistcategoria.DataSource=ObjCategoriaLN.buscar End Sub End Class
Y este es el error que me muestra:
No se ha especificado ningún argumento para el parámetro 'ObjCategoriaEN' de 'Public Function buscar(ObjCategoriaEN As EntidadNegocio.CategoriaEN) As Object'. (BC30455)