Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

ERROR EN DATAGRID

192 views
Skip to first unread message

Noelia Gutiérrez Jave

unread,
Nov 6, 2000, 3:00:00 AM11/6/00
to

Amigos del foro, soy nueva programando con Ado y visual basic.
Mi problema es el siguiente. Tengo un datagrid donde quisiera mostrar los
resultados
de un combobox.
Mi procedimiento lo he realizado en sql y es el siguiente

CREATE PROCEDURE sp_BuscaCrono
@codigo numeric(3)
AS
select D.DETC_FECINI, A.ACTI_descri from
DETALLE__CRONOGRAMA_SA AS D,
ACTIVIDAD_SA AS A
where A.ACTI_CODIGO=D.ACTI_CODIGO and PROG_CODIGO= @codigo


Este es el codigo de mi formulario

Private Sub Command2_Click()
Dim sql As String
Dim rs1 As New ADODB.Recordset
Dim codigo As Integer

codigo = CInt(cbPrograma.ItemData(cbPrograma.ListIndex))
If cbPrograma.ListIndex <> -1 Then
DataGrid1.ClearFields

D1.sp_buscacro (codigo)
Set rs1 = D1.rssp_buscacro 'D1 , es mi conexion mediante el dataenvironment

Set DataGrid1.DataSource = rs1

Do While Not rs1.EOF
DataGrid1.Columns(0) = rs1!DETC_FECINI
DataGrid1.Columns(1) = rs1!ACTI_descri

rs1.MoveNext
Loop
rs1.Close
End If

End Sub

Private Sub Form_Load()

rs.Open "Select * from PROGRAMA", CN, adOpenForwardOnly, adLockOptimistic
Do While Not rs.EOF
cbPrograma.AddItem (rs!PROG_NOMCOR)
cbPrograma.ItemData(cbPrograma.NewIndex) = rs!PROG_CODIGO
rs.MoveNext
Loop
rs.Close


Y el error que me genera es el siguiente " error 7010 en tiempo de
ejecución, La columna es de solo lectura."

Muchas gracias de antemano por la ayuda
Noelia Gutierrez

David Maralb.

unread,
Nov 6, 2000, 3:00:00 AM11/6/00
to

En que linea te genera el error?

Noelia Gutiérrez Jave <nogu...@ec-red.com> wrote in message
news:#nmkBuESAHA.211@cppssbbsa03...

Noelia Gutierrez

unread,
Nov 7, 2000, 12:01:07 AM11/7/00
to
El problema es que si me muestra los resultados en el datagrid, pero luego
sale el siguiente error :" error 7010 en tiempo de
ejecución, La columna es de solo lectura." y cuando depuro se muestra
esta linea de codigo

DataGrid1.Columns(0) = rs1!DETC_FECINI

"David Maralb." <david_...@hotmail.com> escribió en el mensaje
news:ukVqn1ESAHA.261@cppssbbsa05...

David Maralb.

unread,
Nov 7, 2000, 3:00:00 AM11/7/00
to

Disculpa por la tardanza (o tardansa [tambien disculpa las faltas de
ortografia]) tal ves ya tengas la solucion pero por si no yo lo hago asi:

Despues de obtener el RecordSet lo Seteo directamente a la propiedad
DataSource del DataGrid, de esa forma el grid se basa en el RecordSet para
desplegar sus datos, por lo cual el RecordSet yo lo dejo como una variable
global para tenerla disponible siempre, ahora segun yo cuando obtienes un
record set por medio de la ejecucion de un SP, la unica forma que no puedes
abrir es ForwarOnly lo que significa que solo lo podras navegar una ves, por
lo cual no esta Bookmarckable (o algo asi) que es una propiedad de un
RecordSet necesaria para poderlo usar como DataSource de un DataGrid, bueno
pero eso noquiere decir que no se pueda hacer algo, yo lo que hago es
realizar una conversion, que seria la siguinte:

Sub ConvertFRecordSetTOKRecordSet(ByVal FRecordSet As ADODB.RecordSet,
KRecordSet As ADODB.RecordSet)
'Convertimos el Record Set obtenido en Uno Bokmarkable
Dim mField As ADODB.Field
For Each mField In FRecordSet.Fields
KRecordSet.Fields.Append mField.Name, adBSTR
Next mField

KRecordSet.Open

Do While Not FRecordSet.EOF
KRecordSet.AddNew
For i = 0 To FRecordSet.Fields.Count - 1
KRecordSet(i) = FRecordSet.Fields(i).Value & ""
Next
FRecordSet.MoveNext
Loop
'Fin de la Conversion
End Sub

y la usas mas o menos asi:

Dim NewRecordSet as new RecordSet

'Esta linea Obtiene el RecordSet de la ejecucion del SP
Set RecordSet = Command.Execute

ConvertFRecordSetTOKRecordSet NewRecordSet,RecordSet

Ojala te sirve. Saludos.

0 new messages