Como obtener el texto escrito en un textfield en una sentencia SQL??
Hola,
tengo un programa que necesita conectarse a una bd en sqlserver. Mi problema es que cuando voy a escribir una sentencia para que me introduzca un nuevo registro con los campos de un formulario, no puede leer lo que hay en los objetos text del mismo. Este es mi código:
Private Sub Command1_Click()
' Por si ya estaba abierta...
Set cnn = Nothing
Set rst = Nothing
'
' Crear los objetos
Set cnn = New ADODB.Connection
Set rst = New ADODB.Recordset
'
' abrir la base usando las credenciales de Windows
cnn.Open "Provider=SQLOLEDB; " & _
"Initial Catalog=Prueba; " & _
"Data Source=PORTATIL_CHM; " & _
"integrated security=SSPI; persist security info=True;"
'
' abrir el recordset indicando la tabla a la que queremos acceder
rst.Open "insert into alumnos (id_alumno, passw, nombre, apellidos, email) values ('text1.text', '.text2.text', 'text3.Text', 'text4.Text', 'text5.Text')", cnn, adOpenDynamic, adLockOptimistic
End Sub
Evidentemente, en la base de datos me guarda text1.text en lugar de su contenido, y asi en todos los atributos de la tupla. Y es que en SQL, lo que va en ' ' simples significa ese texto exactamente. Como lo puede cambiar?? Alguien sabe algo?? Manteniendo el recorset como forma de acceso porque no conozco otra!! Muchas gracias de antemano.
tengo un programa que necesita conectarse a una bd en sqlserver. Mi problema es que cuando voy a escribir una sentencia para que me introduzca un nuevo registro con los campos de un formulario, no puede leer lo que hay en los objetos text del mismo. Este es mi código:
Private Sub Command1_Click()
' Por si ya estaba abierta...
Set cnn = Nothing
Set rst = Nothing
'
' Crear los objetos
Set cnn = New ADODB.Connection
Set rst = New ADODB.Recordset
'
' abrir la base usando las credenciales de Windows
cnn.Open "Provider=SQLOLEDB; " & _
"Initial Catalog=Prueba; " & _
"Data Source=PORTATIL_CHM; " & _
"integrated security=SSPI; persist security info=True;"
'
' abrir el recordset indicando la tabla a la que queremos acceder
rst.Open "insert into alumnos (id_alumno, passw, nombre, apellidos, email) values ('text1.text', '.text2.text', 'text3.Text', 'text4.Text', 'text5.Text')", cnn, adOpenDynamic, adLockOptimistic
End Sub
Evidentemente, en la base de datos me guarda text1.text en lugar de su contenido, y asi en todos los atributos de la tupla. Y es que en SQL, lo que va en ' ' simples significa ese texto exactamente. Como lo puede cambiar?? Alguien sabe algo?? Manteniendo el recorset como forma de acceso porque no conozco otra!! Muchas gracias de antemano.
Espero ayudarte (no soy experto)
luego de values coloca :
(" & text1.text & "," & text2.text & "," & text3.text & "," & text4.text & "," & text5.text & ")",cnn, adOpen...
Otra forma sería guardar los valores en una cadena:
Dim Valores as String
Valores= text1.text & "," & text2.text & "," & text3.text & "," & text4.text & "," & text5.text
entonces:
rst.Open "insert into alumnos (id_alumno, passw, nombre, apellidos, email) values (" & Valores & ")", cnn, adOpenDynamic, adLockOptimistic
luego de values coloca :
(" & text1.text & "," & text2.text & "," & text3.text & "," & text4.text & "," & text5.text & ")",cnn, adOpen...
Otra forma sería guardar los valores en una cadena:
Dim Valores as String
Valores= text1.text & "," & text2.text & "," & text3.text & "," & text4.text & "," & text5.text
entonces:
rst.Open "insert into alumnos (id_alumno, passw, nombre, apellidos, email) values (" & Valores & ")", cnn, adOpenDynamic, adLockOptimistic
Agrego algo a lo de Kipied, cuando generes la cadena SQL, los valores texto van entre comillas simples, no así los numéricos.
Con los números, como precaución, trata de reemplazar las posibles comas decimales por puntos, ya que en la concatenación de valores, el motor va a tomar esa coma como separador de campos y no como coma decimal.
Investiga la función Replace de VB
Con los números, como precaución, trata de reemplazar las posibles comas decimales por puntos, ya que en la concatenación de valores, el motor va a tomar esa coma como separador de campos y no como coma decimal.
Investiga la función Replace de VB
