Variables en SQL

23/12/2006 - 00:55 por Joan Carles | Informe spam
Hola , soy novato y ando algo perdido , necesito mediante una consulta SQL
que me devuelva una serie de registros en un grid ( tableadapter )pero de los
nombres ( del campo nombre ) que empiecen por un carácter que estará en un
text box.

Solo me funciona si le meto en el LIKE un valor fijo y no veo la manera de
decirle que coja esa valor de la variable.

PD. Estoy usando Visual 2005 y la DB es de Access.

Muchas gracias

Preguntas similare

Leer las respuestas

#6 SoftJaén
03/01/2007 - 17:42 | Informe spam
"Joan Carles" escribió:

Mostrar la cita
Dices que tu solución no es buena. ¿Y con mi solución? ¿Se rellenan los
cuadros de texto con los datos existentes en la fila actual del control
Grid?

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
#7 Joan Carles
04/01/2007 - 09:11 | Informe spam
Hola Enrique , tu solución funciona si se pone en el evento clic del grid
esto :
row = DG_Clientes.CurrentRow
Dim index As Int32 = row.Index
TB_prueba.Text = DG_Clientes.Rows(index).Cells("NComercial").Value.ToString

Pero no soluciona tampoco mi problema , la BD de clientes en cuestión tiene
como 40 campos , en el grid solo se muestran 6 ( los mas básicos ) y como te
decía la idea era que selecionara del grid el nombre que interesara y se
mostraran los 40 campos en la form o en su defecto que se pudiera teclear
parte del nombre para que en el grid solo mostrara los que cumplen con lo
tecleado y entonces escoger el que interese del grid.
El problema está en que con tu solución solo puedo actualizar los campos de
la form que coinciden con los que están en el grid que son los menos.
Para el resto no tengo "nombre de columna que asignar".
Yo tengo apuntando todos los texbox de la form directamente al campo de la
BD. desde la propiedad databindings/avanzado.

Saludos cordiales

"SoftJaén" wrote:

Mostrar la cita
#8 SoftJaén
04/01/2007 - 15:37 | Informe spam
"Joan Carles" escribió:

Mostrar la cita
¡Bueno! Deberás de ejecutar el código fuente en el evento que más te
interese.

Mostrar la cita
Pues quizás el problema se encuentre en el diseño que tiene tu formulario.
:-)

Por lo que estoy observando, parece ser que ese formulario hace de todo, tal
como recorrer todos los registros de clientes o filtrar clientes. Lo mismo
te deberías de parar a pensar si sería conveniente o no mostrar toda esa
cantidad de controles en un formulario o en varios formularios, es decir,
uno para filtrar los clientes, y otro para ver los datos generales de los
clientes, cuando el usuario selecciona un cliente en el control Grid.

Si me permites una pregunta, ¿para qué «leches» quieres un formulario
enlazado a datos? Si tu base de datos sólo tiene 100 clientes, está bien que
cargues todos los clientes en un objeto DataTable, y que te muevas de un
registro a otro con los típicos controles de navegación. Pero ahora piensa
en una base de datos que tenga 100.000 clientes. Como siempre digo, ¿qué
usuario es capaz de manejar esa cantidad de registros a la misma vez? ¿Para
que quiere un formulario con una barra de navegación? Para recorrer todos
los registros, uno a uno, digo yo que tardaría toda una mañana, y no creo yo
que el jefe le pague «por navegar entre clientes». :-)

Si yo deseo consultar los datos personales de un cliente, en un campo de
texto escribiría el identificador del cliente, y al hacer clic sobre un
botón, vería los datos en un nuevo formulario.

La solución que yo te indiqué es sólo un ejemplo de cómo debes de actuar. Si
no te vale para tus propósitos tal cual aparece, pues tendrás que adaptar el
ejemplo para que funcione en tu proyecto.

Si en el Grid no tienes "nombre de columna que asignar", tendrás que tomar
una columna para ejecutar, por ejemplo, una consulta SQL de selección que te
devuelva los datos generales del cliente seleccionado en el control Grid:

1º) En el control Grid obtengo el identificador del cliente: 43121258.

2º) Con ese identificador tengo que obtener los datos generales
correspondientes al cliente seleccionado, los cuales mostraría en un nuevo
formulario.

Pero si todo lo deseas hacer en un mismo formulario, cuyos controles encima
se encuentran enlazados a un origen de datos, pues la verdad que la cosa se
complica un poco más. :-)

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
#9 SoftJaén
05/01/2007 - 18:01 | Informe spam
"Joan Carles" escribió:

Mostrar la cita
Pues esa es la única manera de aprender. Si te acabas de iniciar en el mundo
de Visual Basic .net, la lectura de libros y los ejemplos que encuentres en
las páginas web dedicadas a .net, son los que te enseñaran a profundizar más
en el lenguaje.

En la página del compañero Guillermo Som, más conocido por «El Guille»,
encontrarás multitud de ejemplos sobre ADO .NET. Aquí te dejo la dirección
del índice:

http://www.elguille.info/NET/ADONET...ADONET.asp

Mostrar la cita
En ADO .NET existen dos formas de trabajar con una base de datos: en modo
conectado y en modo sin conexión. En el primer caso, abrirías una conexión
con la base de datos, y ejecutarías las correspondientes consultas SQL para
añadir, eliminar o actualizar los registros de la tabla Clientes. En el
segundo caso (que es el tú estás utilizando), tendrás que hacer uso de los
distintos objetos (DataSet, DataAdapter, etc.), para actualizar la base de
datos.

Si estás aprendiendo, mejor será que empieces por el «modo conectado», y una
vez que te manejes bien con él, pases al «modo sin conexión». Pero, ¡claro!
Como te he indicado anteriormente, para utilizar el «modo conectado» deberás
de conocer la sintaxis adecuada del lenguaje SQL, para ejecutar las
correspondientes consultas de actualización.

Si desconoces el lenguaje SQL, el manual de "primeros auxilios" que tengo en
mi web te podría venir bien:

Manual del lenguaje SQL del motor Microsoft Jet versión 4.0
http://mvp-access.com/softjaen/manu.../index.htm

Mostrar la cita
¡Hombre! Si te digo la verdad, no me parece ni lógico ni prudente por mi
parte. No es por hacerte un pequeño programa de demostración, pero entiendo
que si de deseas aprender de verdad a programar en Visual Basic .net, lo
lógico sería que tú mismo intentaras desarrollar ese programa básico, porque
si te lo dan hecho el programa, ¿qué vas a aprender? ¿A cortar y pegar el
código fuente? :-)

Céntrate en algo que deseas hacer, como por ejemplo, añadir un registro. Si
vas a trabajar en «modo conectado», busca información sobre lo siguiente:

- Abrir una conexión con la base de datos:

Dim cnn As New OleDbConnection(cadenaConexion)

- Configurar la consulta SQL de datos añadidos, que viene a ser
simplemente ejecutar una consulta INSERT INTO:

dim sql As String = _
"INSERT INTO Clientes (" & _
"Campo1, Campo2, Campo3, CampoN" & _
") VALUES ( " & _
"ValorCampo1, ValorCampo2, ValorCampo3, ValorCampoN)"

- Crear un objeto OleDbCommand para ejecutar la consulta SQL:

Dim cmd As New OleDbCommand (sql, cnn)

' Abrimos la conexión y ejecutamos la consulta
cnn.Open()
Dim r As Int32 = cmd.ExecuteNonQuery()

' Si se ha añadido el registro, limpiamos los campos
If r <> 0 Then MessageBox.Show ("Registro añadido")

Éste código es todo lo que necesitas para añadir un nuevo registro a tu
tabla de Clientes. ¿Que deseas eliminar o actualizar un registro? Pues
entonces, en lugar de ejecutar una consulta INSERT INTO, ejecutarías una
consulta DELETE o UPDATE respectivamente. Pero el código fuente para
ejecutar la consulta es el mismo; lo único que cambia es la consulta SQL.

¡Venga! Haz una prueba y verás como consigues añadir el registro. :-)

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
#10 Joan Carles
06/01/2007 - 01:06 | Informe spam
Hola Enrique

Muchas gracias por tus consejos , ayudas y sobre todo paciencia.

Iré investigando por todos los medios para acabar la aplicación , de momento
ya he conseguido grabar un registro !!!

He definido un query desde el dataset y con esta instrucción ya me graba
Me.ProvinciasTableAdapter.InsertQueryProvincias(TB_Provincia.Text)
de igual forma he consegido borrar el registro.

Ya es mucho eh !!!

Ahora me estoy peleando por conseguir en color de fondo de un datagridview
transparente , cuando lo cojo de las propiedades me sale un error , mirando
la ayuda dice que tengo que crear un Public Property BackgroundColor As Color

Pero no tengo ni idea de dónde tengo que crear esa declaración , pero ahí voy.

Cordiales Saludos

"SoftJaén" wrote:

Mostrar la cita
Ads by Google
Search Busqueda sugerida