Visual Basic - problems con TextBox.ControlSource y TextBox.Value

Life is soft - evento anual de software empresarial
 
Vista:

problems con TextBox.ControlSource y TextBox.Value

Publicado por Leocam (12 intervenciones) el 10/01/2007 12:55:24
Saludos programadores y pseudoprogramadores (como yo :P)
Estoy buscando un alma caritativa que me ayude con el siguiente problema.

Estoy realizando una base de datos en Access 2002 y quisiera que luego de que un listado combinado se actualice (un AfterUpdate que toma los datos de una tabla tblCLIENTEs) varios campos TextBox actualicen su Value (por medio de unas instrucciones SQL que se ejecutan en el AfterUpdate) y que esto se imprima en los respectivos ControlSource (que se encuentran en una tabla SolCambioMaquina).

El problema es que Value no me representa el resultado sino la instrucción literal de SQL.
Les pongo el siguiente ejemplo:
El código del AfterUpdate de NumCliente es el siguiente:
Dim GetClientName As String
GetClientName = "SELECT Nombre FROM tblCLIENTES WHERE CodigoCliente = '" & Forms.SolCambioMaquina.NumCliente & "'"

Forms.SolCambioMaquina.NombreCliente = GetClientName.

Es decir, que si yo selecciono el cliente con número xxxx en lugar de que en el campo NombreCliente me aparezca el nombre correspondiente a ese número, lo que aparece es: SELECT Nombre FROM tblCLIENTES WHERE CodigoCliente = 'xxxx' (ojo: el campo CodigoCliente en la tabla es texto, por eso las comillas simples)

Entiendo que el programa me envia este resultado porque GetClientName es una cadena de texto. La única forma que he encotrado para solventar este problema es utilizando un ListBox en lugar de un TextBox, y que el RowSource ejecute la consulta de SQL. Sin embargo la desventaja del ListBox es que, aunque en el formulario aparezca el resultado correcto, si quien llena el formulario no selecciona el texto del campo después de haber realizado el AfterUpdate (de tal forma de q cambia de color y se observa q fue seleccionado) se guardan el resto de los datos del registro excepto este. Otro problema es que al guardar el registro, en el formulario se mantiene el nombre del cliente seleccionado la última vez q se llenó el formulario (incluso cuando el formulario tiene la propiedad DataEntry en "true")

¿Existe alguna manera de hacer esto usando TextBox?¿Tengo que crear un RecordSet? ¿Que debo hacer? HEEEEEEEEEEEEEEELP!!!!!!!!

Por favor comprendan que no soy programador, sino un desdichado "utility" cuyo jefe cree que soy programador solo porque manejo Flash ¿¿¿¿???? Así que si me pueden echar una mano con el código se los agradecería.

See ya!
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:problems con TextBox.ControlSource y TextBox.Va

Publicado por Pedro Luis (878 intervenciones) el 10/01/2007 14:00:41
En efecto un Select se le tiene que asignar a un recordset o a un recordsource.
Podrias muy bien usar el texbox si lo asocias aun data y ponerselo en el recordsource aunque te recomiendo lo siguiente
dim Bdd as database
dim Aux as recordset
Set Bdd=Opendatabase .......
set Aux=Bdd.openrecordset(Select Nombre .......)
NombreCliente=Aux!Nombre
Bdd..close
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:problems con TextBox.ControlSource y TextBox.Va

Publicado por Leocam (12 intervenciones) el 11/01/2007 12:31:33
Saludos Pedro Luis. Gracias por contestar. Segui tu consejo e hice lo siguiente:

Private Sub NumCliente_AfterUpdate()
Dim Db As Database, GetClientData As Recordset, strSQLName As String, LocationDb As String

LocationDb = "C:\Cambios de Maquina\manoli\manoli.mdb"
strSQLName = "SELECT Nombre FROM tblCLIENTES WHERE CodigoCliente = '" & Forms.SolCambioMaquina!NumCliente.Value & "';"
Set Db = OpenDatabase(LocationDb, , True)
Set GetClientData = Db.OpenRecordset(strSQLName, dbOpenForwardOnly)
Forms.SolCambioMaquina!NombreCliente.Value = GetClientData
End Sub

Sin embargo no me funciona. Reporta un fallo al setear el recordset (Set GetClientData....). El error q indica es : "No coinciden los tipos de datos en la expresión de criterios".
Lo he intentado en DAO y ADO y no me funciona.
Estoy haciendo algo mal?

Gracias de antemano.
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