obtener informacion de BD

26/01/2007 - 08:45 por Cristina | Informe spam
Buenos dias a todo@s!A ver teng un problemilla para obtener unos valores de
mi BD, ejecuto paso a paso cada instruccion y si veo q la consulta coge los
valores q yo quiero...y si hay datos xa mostrar xo no me los muestra!!no se q
toy haciend mal...el codigo es algo asi:

Dim cmd As New Data.OracleClient.OracleCommand

Me.lstbOrden.Items.Clear()
Me.txtPuesto.Text =
ListadoPlantillas.lstPlantillas.SelectedItems(0).SubItems(3).Text

Dim i As Integer
Dim contador As Integer = 0
contador = Me.obtenerNumeroPersonas()

Dim m() As String
ReDim m(contador - 1)

cmd.CommandText = "SELECT Nombre FROM Persona WHERE IdPuesto=' " +
Me.txtPuesto.Text + " ' "
co = Principal.co
cmd.Connection = co
dr = cmd.ExecuteReader()
Try
While dr.Read() And i <> contador
m(i) = dr.GetValue(0).ToString
i += 1
End While
Finally
dr.Close()
End Try

'mostrar empleados en listbox
Dim j As Integer
For j = 0 To m.Length() - 1
'Me.lstbOrden.Items().Add(m(j - 1).ToString())
Next

Espero q alguien m pueda ayudar xq no se a q se debe esto, si paso a paso
todo esta bien!!!

Preguntas similare

Leer las respuestas

#1 Federico A. Colli
26/01/2007 - 14:05 | Informe spam
Hola.
Realmente no se si sera eso, pero el metodo obtenerNumeroPersonas
estara devolviendo una cantidad igual a la cantidad de registros a leer
del DataReader?
Yo que tu no utilizaria este metodo y tampoco un vector, dado que
puedes cargar el listado directamente con lo leido del DataReader de la
siguiente forma:
...
While dr.Read()
Me.lstbOrden.Items().Add(dr.GetValue(0).ToString)
End While
...

Alternativamente, si deseas utilizar la forma que describiste, te
recomiendo no utilizar el metodo que mencione antes y redimensionar el
vector en cada registro leido de la siguiente forma:

While dr.Read()
'pido disculpas pero no tengo el entorno de desarrollo a mano,
por lo que no
'recuerdo exactamente el metodo de la clase array para obtener la
cantidad
'de celdas en el vector, pero seria algo asi usando
"GetUpperBounds"

Redeim Preserve m(m."GetUpperBounds(0)" + 1)
m(GetUpperBounds(0)) = dr.GetValue(0).ToString
End While

Saludos

On 26 ene, 04:45, Cristina wrote:
Buenos dias a !A ver teng un problemilla para obtener unos valores de
mi BD, ejecuto paso a paso cada instruccion y si veo q la consulta coge los
valores q yo quiero...y si hay datos xa mostrar xo no me los muestra!!no se q
toy haciend mal...el codigo es algo asi:

Dim cmd As New Data.OracleClient.OracleCommand

Me.lstbOrden.Items.Clear()
Me.txtPuesto.Text > ListadoPlantillas.lstPlantillas.SelectedItems(0).SubItems(3).Text

Dim i As Integer
Dim contador As Integer = 0
contador = Me.obtenerNumeroPersonas()

Dim m() As String
ReDim m(contador - 1)

cmd.CommandText = "SELECT Nombre FROM Persona WHERE IdPuesto=' " +
Me.txtPuesto.Text + " ' "
co = Principal.co
cmd.Connection = co
dr = cmd.ExecuteReader()
Try
While dr.Read() And i <> contador
m(i) = dr.GetValue(0).ToString
i += 1
End While
Finally
dr.Close()
End Try

'mostrar empleados en listbox
Dim j As Integer
For j = 0 To m.Length() - 1
'Me.lstbOrden.Items().Add(m(j - 1).ToString())
Next

Espero q alguien m pueda ayudar xq no se a q se debe esto, si paso a paso
todo esta bien!!!
Respuesta Responder a este mensaje
#2 Roberto M. Oliva
26/01/2007 - 15:20 | Informe spam
Hola!

Tambien lo puedes hacer asi (un poco de memoria):

Dim ar as new ArrayList ()

cmd.CommandText = "SELECT Nombre FROM Persona WHERE IdPuesto='
" +
Me.txtPuesto.Text + " ' "
co = Principal.co
cmd.Connection = co
dr = cmd.ExecuteReader()
Try
While dr.Read()
ar.add (dr.GetValue(0).ToString)
End While
Finally
dr.Close()
End Try

'mostrar empleados en listbox
lstbOrden.DataTextField = "value"
lstbOrden.DataSource = ar
lstbOrden.DataBind ();

Es mas sencillo... no??
Saludos
Roberto M. Oliva


On 26 ene, 14:05, "Federico A. Colli" wrote:
Hola.
Realmente no se si sera eso, pero el metodo obtenerNumeroPersonas
estara devolviendo una cantidad igual a la cantidad de registros a leer
del DataReader?
Yo que tu no utilizaria este metodo y tampoco un vector, dado que
puedes cargar el listado directamente con lo leido del DataReader de la
siguiente forma:
...
While dr.Read()
Me.lstbOrden.Items().Add(dr.GetValue(0).ToString)
End While
...

Alternativamente, si deseas utilizar la forma que describiste, te
recomiendo no utilizar el metodo que mencione antes y redimensionar el
vector en cada registro leido de la siguiente forma:

While dr.Read()
'pido disculpas pero no tengo el entorno de desarrollo a mano,
por lo que no
'recuerdo exactamente el metodo de la clase array para obtener la
cantidad
'de celdas en el vector, pero seria algo asi usando
"GetUpperBounds"

Redeim Preserve m(m."GetUpperBounds(0)" + 1)
m(GetUpperBounds(0)) = dr.GetValue(0).ToString
End While

Saludos

On 26 ene, 04:45, Cristina wrote:> Buenos dias a !A ver teng un problemilla para obtener unos valores de
> mi BD, ejecuto paso a paso cada instruccion y si veo q la consulta coge los
> valores q yo quiero...y si hay datos xa mostrar xo no me los muestra!!no se q
> toy haciend mal...el codigo es algo asi:

> Dim cmd As New Data.OracleClient.OracleCommand

> Me.lstbOrden.Items.Clear()
> Me.txtPuesto.Text > > ListadoPlantillas.lstPlantillas.SelectedItems(0).SubItems(3).Text

> Dim i As Integer
> Dim contador As Integer = 0
> contador = Me.obtenerNumeroPersonas()

> Dim m() As String
> ReDim m(contador - 1)

> cmd.CommandText = "SELECT Nombre FROM Persona WHERE IdPuesto=' " +
> Me.txtPuesto.Text + " ' "
> co = Principal.co
> cmd.Connection = co
> dr = cmd.ExecuteReader()
> Try
> While dr.Read() And i <> contador
> m(i) = dr.GetValue(0).ToString
> i += 1
> End While
> Finally
> dr.Close()
> End Try

> 'mostrar empleados en listbox
> Dim j As Integer
> For j = 0 To m.Length() - 1
> 'Me.lstbOrden.Items().Add(m(j - 1).ToString())
> Next

> Espero q alguien m pueda ayudar xq no se a q se debe esto, si paso a paso
> todo esta bien!!!
Respuesta Responder a este mensaje
#3 Federico A. Colli
26/01/2007 - 15:46 | Informe spam
Sisi, vinculando el control a un array, o también vinculando
directamente un DataView al control de esta forma (tambien de memoria):

Dim dv As DataSet

cmd.CommandText = "SELECT Id, Nombre FROM Persona WHERE
IdPuesto='
" + Me.txtPuesto.Text + " ' "
cmd.Connection = Principal.co
dv = cmd.ExecuteDataSet.Tables(0).DefaultView

'mostrar empleados en listbox
lstbOrden.DataSource = dv
lstbOrden.DisplayMember = "Nombre"
lstbOrden.ValueMember = "Id"

Saludos


On 26 ene, 11:20, "Roberto M. Oliva" wrote:
Hola!

Tambien lo puedes hacer asi (un poco de memoria):

Dim ar as new ArrayList ()

cmd.CommandText = "SELECT Nombre FROM Persona WHERE IdPuesto='
" +
Me.txtPuesto.Text + " ' "
co = Principal.co
cmd.Connection = co
dr = cmd.ExecuteReader()
Try
While dr.Read()
ar.add (dr.GetValue(0).ToString)
End While
Finally
dr.Close()
End Try

'mostrar empleados en listbox
lstbOrden.DataTextField = "value"
lstbOrden.DataSource = ar
lstbOrden.DataBind ();

Es mas sencillo... no??
Saludos
Roberto M. Oliva

On 26 ene, 14:05, "Federico A. Colli" wrote:

> Hola.
> Realmente no se si sera eso, pero el metodo obtenerNumeroPersonas
> estara devolviendo una cantidad igual a la cantidad de registros a leer
> del DataReader?
> Yo que tu no utilizaria este metodo y tampoco un vector, dado que
> puedes cargar el listado directamente con lo leido del DataReader de la
> siguiente forma:
> ...
> While dr.Read()
> Me.lstbOrden.Items().Add(dr.GetValue(0).ToString)
> End While
> ...

> Alternativamente, si deseas utilizar la forma que describiste, te
> recomiendo no utilizar el metodo que mencione antes y redimensionar el
> vector en cada registro leido de la siguiente forma:

> While dr.Read()
> 'pido disculpas pero no tengo el entorno de desarrollo a mano,
> por lo que no
> 'recuerdo exactamente el metodo de la clase array para obtener la
> cantidad
> 'de celdas en el vector, pero seria algo asi usando
> "GetUpperBounds"

> Redeim Preserve m(m."GetUpperBounds(0)" + 1)
> m(GetUpperBounds(0)) = dr.GetValue(0).ToString
> End While

> Saludos

> On 26 ene, 04:45, Cristina wrote:> Buenos dias a !A ver teng un problemilla para obtener unos valores de
> > mi BD, ejecuto paso a paso cada instruccion y si veo q la consulta coge los
> > valores q yo quiero...y si hay datos xa mostrar xo no me los muestra!!no se q
> > toy haciend mal...el codigo es algo asi:

> > Dim cmd As New Data.OracleClient.OracleCommand

> > Me.lstbOrden.Items.Clear()
> > Me.txtPuesto.Text > > > ListadoPlantillas.lstPlantillas.SelectedItems(0).SubItems(3).Text

> > Dim i As Integer
> > Dim contador As Integer = 0
> > contador = Me.obtenerNumeroPersonas()

> > Dim m() As String
> > ReDim m(contador - 1)

> > cmd.CommandText = "SELECT Nombre FROM Persona WHERE IdPuesto=' " +
> > Me.txtPuesto.Text + " ' "
> > co = Principal.co
> > cmd.Connection = co
> > dr = cmd.ExecuteReader()
> > Try
> > While dr.Read() And i <> contador
> > m(i) = dr.GetValue(0).ToString
> > i += 1
> > End While
> > Finally
> > dr.Close()
> > End Try

> > 'mostrar empleados en listbox
> > Dim j As Integer
> > For j = 0 To m.Length() - 1
> > 'Me.lstbOrden.Items().Add(m(j - 1).ToString())
> > Next

> > Espero q alguien m pueda ayudar xq no se a q se debe esto, si paso a paso
> > todo esta bien!!!
Respuesta Responder a este mensaje
#4 Federico A. Colli
26/01/2007 - 15:46 | Informe spam
Sisi, vinculando el control a un array, o también vinculando
directamente un DataView al control de esta forma (tambien de memoria):

Dim dv As DataView

cmd.CommandText = "SELECT Id, Nombre FROM Persona WHERE
IdPuesto='
" + Me.txtPuesto.Text + " ' "
cmd.Connection = Principal.co
dv = cmd.ExecuteDataSet.Tables(0).DefaultView

'mostrar empleados en listbox
lstbOrden.DataSource = dv
lstbOrden.DisplayMember = "Nombre"
lstbOrden.ValueMember = "Id"

Saludos

On 26 ene, 11:20, "Roberto M. Oliva" wrote:
Hola!

Tambien lo puedes hacer asi (un poco de memoria):

Dim ar as new ArrayList ()

cmd.CommandText = "SELECT Nombre FROM Persona WHERE IdPuesto='
" +
Me.txtPuesto.Text + " ' "
co = Principal.co
cmd.Connection = co
dr = cmd.ExecuteReader()
Try
While dr.Read()
ar.add (dr.GetValue(0).ToString)
End While
Finally
dr.Close()
End Try

'mostrar empleados en listbox
lstbOrden.DataTextField = "value"
lstbOrden.DataSource = ar
lstbOrden.DataBind ();

Es mas sencillo... no??
Saludos
Roberto M. Oliva

On 26 ene, 14:05, "Federico A. Colli" wrote:

> Hola.
> Realmente no se si sera eso, pero el metodo obtenerNumeroPersonas
> estara devolviendo una cantidad igual a la cantidad de registros a leer
> del DataReader?
> Yo que tu no utilizaria este metodo y tampoco un vector, dado que
> puedes cargar el listado directamente con lo leido del DataReader de la
> siguiente forma:
> ...
> While dr.Read()
> Me.lstbOrden.Items().Add(dr.GetValue(0).ToString)
> End While
> ...

> Alternativamente, si deseas utilizar la forma que describiste, te
> recomiendo no utilizar el metodo que mencione antes y redimensionar el
> vector en cada registro leido de la siguiente forma:

> While dr.Read()
> 'pido disculpas pero no tengo el entorno de desarrollo a mano,
> por lo que no
> 'recuerdo exactamente el metodo de la clase array para obtener la
> cantidad
> 'de celdas en el vector, pero seria algo asi usando
> "GetUpperBounds"

> Redeim Preserve m(m."GetUpperBounds(0)" + 1)
> m(GetUpperBounds(0)) = dr.GetValue(0).ToString
> End While

> Saludos

> On 26 ene, 04:45, Cristina wrote:> Buenos dias a !A ver teng un problemilla para obtener unos valores de
> > mi BD, ejecuto paso a paso cada instruccion y si veo q la consulta coge los
> > valores q yo quiero...y si hay datos xa mostrar xo no me los muestra!!no se q
> > toy haciend mal...el codigo es algo asi:

> > Dim cmd As New Data.OracleClient.OracleCommand

> > Me.lstbOrden.Items.Clear()
> > Me.txtPuesto.Text > > > ListadoPlantillas.lstPlantillas.SelectedItems(0).SubItems(3).Text

> > Dim i As Integer
> > Dim contador As Integer = 0
> > contador = Me.obtenerNumeroPersonas()

> > Dim m() As String
> > ReDim m(contador - 1)

> > cmd.CommandText = "SELECT Nombre FROM Persona WHERE IdPuesto=' " +
> > Me.txtPuesto.Text + " ' "
> > co = Principal.co
> > cmd.Connection = co
> > dr = cmd.ExecuteReader()
> > Try
> > While dr.Read() And i <> contador
> > m(i) = dr.GetValue(0).ToString
> > i += 1
> > End While
> > Finally
> > dr.Close()
> > End Try

> > 'mostrar empleados en listbox
> > Dim j As Integer
> > For j = 0 To m.Length() - 1
> > 'Me.lstbOrden.Items().Add(m(j - 1).ToString())
> > Next

> > Espero q alguien m pueda ayudar xq no se a q se debe esto, si paso a paso
> > todo esta bien!!!
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida