|
| Autor |
Mensaje |
Baldomero Usuario Iniciado
Registrado: 24 Oct 2011 Mensajes: 15
|
Publicado: Vie 25 Nov, 2011 00:39 am
Título del mensaje: TextBox que no es leido por SELECT |
|
|
Buenas noches. En la Subrutina "Suprimirtitular" llamo a la función ObtenerCantidad para ver si el titular que quiero suprimir tiene operaciones realizadas.
Para eso digo en la función query = "SELECT COUNT (*)...WHERE titular =" & TitularTextbox.text
y no funciona, me da error "Faltan parámetros requeridos". Pero veo que pasando el cursor la query está perfectamente; por el contrario si pongo la
query = "SELECT COUNT(*) ...WHERE titular = 'AMG' " (que es el contenido del TextBox, funciona perfectamente. ¿Por qué? ¿Me lo podríais aclarar? Muchas gracias.
Private Sub btnSuprimirtitular1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSuprimirtitular1.Click
Dim cantidad As Integer = ObtenerCantidad()
MsgBox(cantidad)
If cantidad > 0 Then
If MessageBox.Show("¿Realmente desea suprimir este registro?", "Suprimir", MessageBoxButtons.YesNo, _
MessageBoxIcon.Warning) = DialogResult.No Then
MsgBox("Operación cancelada")
Exit Sub
End If
End If
End Sub
-------
Public Function ObtenerCantidad() As Integer
Try
Dim cnn As OleDb.OleDbConnection
cnn = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Alberto Moreno Gil\Mis documentos\bd4.mdb")
cnn.Open()
MsgBox(TitularTextBox.Text) ' Está bien: AMG
Dim query As String = "SELECT COUNT(*) FROM operaciones where titular =" & TitularTextBox.Text 'OCASIONA ERROR
'Dim query As String = "SELECT COUNT(*) FROM operaciones where titular = 'AMG'" 'fUNCIONA BIEN
Dim cmd As New OleDbCommand(query, cnn)
Return CInt(cmd.ExecuteScalar()) 'AQUI DA EL ERROR pero se refiere al SELECT...
Catch ex As Exception
MessageBox.Show(ex.Message, "Contar registros", MessageBoxButtons.OK, MessageBoxIcon.Information)
End Try
End Function |
|
|
|
| Volver arriba |
|
|
weirdmix Moderador Global

Registrado: 08 May 2008 Mensajes: 618 Ubicación: DF - MEXICO
|
|
| Volver arriba |
|
|
Tesis Administrador

Registrado: 04 Mar 2007 Mensajes: 2750 Ubicación: Valencia - España
|
Publicado: Vie 25 Nov, 2011 21:00 pm
Título del mensaje: Re: TextBox que no es leido por SELECT |
|
|
El problema es simple, mira:
Que tienen estas dos consultas diferente;
| Baldomero escribió: | | Dim query As String = "SELECT COUNT(*) FROM operaciones where titular =" & TitularTextBox.Text 'OCASIONA ERROR |
| Baldomero escribió: | | Dim query As String = "SELECT COUNT(*) FROM operaciones where titular = 'AMG'" 'fUNCIONA BIEN |
Lo que tienen diferente es que todas las cadenas de texto enviadas a la base de datos tienen que ir entre comillas.
Tu consulta debería de quedar así:
| Código: | | Dim query As String = "SELECT COUNT(*) FROM operaciones where titular ='" & TitularTextBox.Text & "'" |
Si el campo a consultar/modificar es numérico no va entre comillas, si es texto si.
Espero a verte ayudado.
Saludos. |
www.lospillaos.es
Normas del foro
Aprende a postear correctamente usando las etiquetas
|
|
| Volver arriba |
|
|
Baldomero Usuario Iniciado
Registrado: 24 Oct 2011 Mensajes: 15
|
Publicado: Vie 25 Nov, 2011 21:39 pm
Título del mensaje: Re: TextBox que no es leido por SELECT |
|
|
Gracias por vuestras amables respuestas.
1) En cuanto a si el TextBox es el apropiado o no, podeis ver que inmediatamente antes del SELECT he puesto un MsgBox que me dice el contenido del TextBox, o sea que por ahí no hay problema.
2) He puesto las comillas simples que me habeis indicado. Ahora no me da error de "Falta parámetro...", sólo una advertencia.
Como tengo la línea crítica de la función ahora con vuestra rectirficación es
Dim query As String = "SELECT COUNT(*) FROM operaciones where titular = ' " & TitularTextBox.Text & " ' " 'No da error, pero no da resultado
'Dim query As String = "SELECT COUNT(*) FROM operaciones where titular = 'AMG'" 'Funciona perfectamente, resultados correctos.
La advertencia que aparece es "La función 'ObtenerCantidad' no devuelve un valor en todas las rutas de acceso de código. ¿Falta una instrucción Return?" Evidentemente no falta la instrucción Return, pero el resto de la advertencia...apenas lo entiendo. Con la llamada al TextBox me da resultado cero, y poniendo a mano el titular, me da los resultados correctos. Repito, muchas gracias. |
|
|
|
| Volver arriba |
|
|
Baldomero Usuario Iniciado
Registrado: 24 Oct 2011 Mensajes: 15
|
Publicado: Sab 26 Nov, 2011 00:17 am
Título del mensaje: Re: TextBox que no es leido por SELECT |
|
|
Al final funcionó: he cambiado algo las denominaciones pero funciona,
Ahora lo veo sencillo, pero me ha dado mucha guerra,
Muchas gracias por vuestra ayuda.
---
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim cantidad As Integer = cuantoshay()
MsgBox(cantidad)
If cantidad > 1 Then
MsgBox("No se puede suprimir")
End If
con.Close()
End Sub
Function cuantoshay() As Integer
Dim query As String
con.Open()
query = "SELECT COUNT(*) FROM operaciones where titular = '" & TitularTextBox.Text & "'"
comando = New OleDb.OleDbCommand(query, con)
MsgBox(comando.ExecuteScalar())
Return CInt(comando.ExecuteScalar())
End Function |
|
|
|
| Volver arriba |
|
|