Visual Basic - datasource y datafield con codigo

Life is soft - evento anual de software empresarial
 
Vista:

datasource y datafield con codigo

Publicado por alicia perez hernandez (9 intervenciones) el 11/01/2005 05:50:48
hola, tengo un problema y necesito su ayuda para resolverlo:

tengo una base de datos que puede cambiar de nombre y ruta; para abrirla uso un common dialog box, tambien uso en codigo la coneccion a esa base de datos así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private Sub Command1_Click()
Dim cn As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim sql As String
 
Set cn = New ADODB.Connection
Set Rs = New ADODB.Recordset
 
cdb1.ShowOpen
 
Rs.CursorType = adOpenDynamic
Rs.CursorLocation = adUseClient
Dim cadena As String
With cn
.Provider = "Microsoft.jet.oledb.4.0"
.ConnectionString = "Data Source= " & cdb1.filename
.Open
End With
sql = "SELECT * FROM calidad"
Rs.Open sql, cn, adOpenStatic, adLockReadOnly
Set Me.DataGrid1.DataSource = Rs
Set Rs = Nothing

qué hago para enlazar los datos a textboxs?

algo como text1.datasource = y text1.datafield = .. o algo.

gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:datasource y datafield con codigo

Publicado por Ayudante (349 intervenciones) el 11/01/2005 19:32:36
Mira, creo que te falta mucha malicia. Sería bueno que compraras un librito de VB, o en su defecto, que lo pidas prestado, existen amigos y bibliotecas.

Los campos texto no usas esa cosa, datasource, por si no sabes inglés, quiere decir fuente de datos, un textbox no tiene tal cosa, puede ligarse a un ADODC pero cuando se hacer por código, se usa la propiedad text: text1.text.

Y el valor por si es lo que crees, no modifica el valor de la bd, para eso debes jugar con instrucciones de SQL
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar

RE:datasource y datafield con codigo

Publicado por Benjo (679 intervenciones) el 11/01/2005 23:40:13
Primero Aicia, tenén cuenta que en el código que posteas estableces la propiedad CursorType como adOpenDynamic

Rs.CursorType = adOpenDynamic

Y luego en la sentencia Open estableces nuevamente el CursorType, pero como adOpenStatic.
O es una o es otra ¿?

Eso no te perjudica en nada, pero es necesario que sepas que esa conexión es Estatica y las modificaciones, agregados y eliminaciones que hagan otros usuarios no las verás sino hasta que ejecutes nuevamente la sentencia.

En cuanto a enlazar TextBox se hace de esta manera.
NO ERA POSIBLE CON UN DATA DE DAO

Set Text1.DataSource = Adodc1
Text1.DataField = "Author"

Donde Adodc1 es un control o bien, podrías crear una clase DataSourceBehavior y trabajar con codigo directamente prescindiendo del Control ADODC

TODO LO QUE CAMBIES EN EL TEXTBOX REPERCUTIRÁ EN LOS REGISTROS DE LA BASE DE DATOS.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:datasource y datafield con codigo

Publicado por Ayudante (349 intervenciones) el 12/01/2005 16:10:41
Oye, me has convensido mucho en otras respuestas, pero en esta sinceramente creo que no me hizo mucha gracias.

El porqué, es que recomiendas el uso de ADODC, yo no soy partidario de eso, incluso, donde he trabajado ninguno lo ha usado, ya que se tienen DLLs que hacen un mejor uso de los datos que un ADODC, creo que es no solo más seguro sino que para una BD de Access es mejor para el rendimiento, ya que Access no soporta una concurrencia muy alta, pero con una DLL y COM+ eso se resuelve con creces.

Todo lo que tú puedas hacer con código es más propenso a error, somo humanos, pero es más fácil corregir un error propio que un error del cual no sabemos por qué ocurre, al menos eso me pasaba con los ADODC.

Además, compañero, hay que adaptarse, .net ya no usa los ADODC, usa ADO.NET y su forma de comunicarse es solo mientra se hace la transacción, pues todos los ejemplos que he visto, no dejan conexión abierta, solo extraen los datos a un DataSet (Recordset) y terminan la conexión.

Insto a Alicia que estudie más sobre el tema, pues creo que está más encaminada que muchos que usan el ADODC y ODBCs, ya que para este último caso también se pueden usar los OLEDB (siempre y cuando existan) que son de conexión más eficiente que los ODBC.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:datasource y datafield con codigo

Publicado por Benjo (679 intervenciones) el 12/01/2005 19:35:19
Ayudante
La consulta de Alicia era puntual
"qué hago para enlazar los datos a textboxs?
algo como text1.datasource = y text1.datafield = .. o algo. "
Pensé en pasarle el código para la creación de una clase, pero como lei tu respuesta del 11/01 , decirle luego yo a Alicia que sí podía hacerse, me pareció una impertinencia.
En cambio, es inevitable concluir que si un ADODC puede enlazarse con un Textbox, pues entonces sí se puede hacer un enlace con un recordset y quedaba luego en Alicia buscar la forma. Inclusive habrás visto que le apunto a Alicia la posible creación de una Clase. No es nada dificil ello, e inclusive hay ejemplos en el MSDN.
(Habrás visto que mi forma de contestar los Post es dando el código en su mayoría de los casos explicándolos de ser posible y no poner Link , ya que entiendo que hacerlos buscar ejemplos es tomarles el pelo, ya que si recurren al Foro, es porque ya han buscado y necesitan una mano, y el Foro está para eso) Aclaro, si pongo Link cuando hay temas que no conozco pero se donde ubicarlos.
Concuerdo con vos un 95% en cuanto a que la programación por código es mucho mejor, no por la absurda tradición de que lo que se ve se maneja más facilmente, sino porque los controles vienen programados con una infinidad de clases innecesarias, pudiendo un programador controlar su apertura, su tiempo de existencia, funcionabilidad y escalabilidad conforme sus necesidades.Es más, el Objeto ADODC especificamente es un desperdicio de recursos y peso en la aplicación
En cuanto ADO.NET, es cierto, voy a tener que migrar prontamente y convertirme en un apostata.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Demasiado puntual diría yo

Publicado por Ayudante (349 intervenciones) el 13/01/2005 05:35:44
Compañero, yo al contrario tuyo, no doy ejemplos, ya existen muchos en la red, no sé tú como llegaste a conocer tanto del tema, pero mentíra sería decir alguna cosa soez de tu persona, tus respuestas te colocan en un estatus de experticia, pero hay que insentivar el espíritu de investigación, ya mucho está hecho y no hay que inventar el agua tibia, pero si uno estudia "CIENCIAS DE LA COMPUTACIÓN", pues es eso, una ciencia y como tal hay que investigar, estudiar, no insentivar la vagancia dando ejemplos tan explícitos.

Y en cuanto a tu parte: "Ayudante.... La consulta de Alicia era puntual", es cierto, ella pone POR CÓDIGO, y si bien me acuerdo yo no lo utilizo por una razón, me daba errores conectar un recordset por código a un text, no sé si lo habrás alguna vez intentado, no me consta.

Lo que puedo decir es que mira tu futuro, vas a usar .NET algún día, y dime cómo aprenderás a usarlo, buena la pregunta verdad, será con las típicas "cómo hago", "cuál es el código", "me podrían dar un ejemplo", no creo, te veo demaciado entuciasta como para eso.

Saludos, y que todo lo que hagas te salga bien.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:datasource y datafield con codigo

Publicado por phoenix (1 intervención) el 07/04/2014 09:58:56
Hey tio..estupendo! gracias por tomarte el tiempo de ayudar a los demas. saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

El codigo

Publicado por Benjo (679 intervenciones) el 12/01/2005 20:06:37
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private WithEvents cnn As ADODB.Connection
Private WithEvents rs As ADODB.Recordset
Private Str As String
Public Sub Update():     rs.Update: End Sub
Public Function Recordcount() As Integer:     Recordcount = rs.Recordcount: End Function
Public Sub delete():    rs.delete:    rs.Update: End Sub
Public Sub MoveLast():     rs.MoveLast: End Sub
Public Sub MoveFirst():    rs.MoveFirst: End Sub
Public Sub MoveNext():    rs.MoveNext: End Sub
Private Sub Class_Terminate()
    rs.Close:     cnn.Close
    Set rs = Nothing:     Set cnn = Nothing
End Sub
Public Sub dbOpen(ByVal strODBC As String, ByVal strSQL As String)
    Set cnn = New ADODB.Connection
    cnn.ConnectionString = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=" & strODBC
    cnn.Open
    Set rs = New ADODB.Recordset
    rs.Open strSQL, cnn, adOpenStatic, adLockOptimistic
End Sub
Private Sub Class_GetDataMember(DataMember As String, Data As Object)
    Set Data = rs
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Activar la clase

Publicado por Benjo (679 intervenciones) el 13/01/2005 11:59:28
Para activar la CLASE que permite el enlace con código a un control TextBox, deberían poner en un Form el siguiente código

1
2
3
4
5
6
7
8
9
10
11
Private Rec As New Class1
Private Sub Command1_Click()
         ' Aquí ponen el nombre del DNS y la instrucción SQL
         Rec.dbOpen "Base", "SELECT * FROM Sub"
        Text1.DataField = "Monto"
        Set Text1.DataSource = Rec
End Sub
Private Sub Command2_Click()
'Ejemplo de movenext
     Rec.MoveNext
End Sub

Pensé que lo había incluido en el Post anterior, disculpen.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar