Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Modulo SQL Autogenerado

Estas en el tema de Modulo SQL Autogenerado en el foro de Visual Basic clásico en Foros del Web. Hola a todos, estoy trabajando en un proyecto e intento hacer lo siguiente, me gustaría hacer un código en un módulo que realizase consultas, actualizaciones ...
  #1 (permalink)  
Antiguo 19/07/2005, 12:19
Avatar de pempas  
Fecha de Ingreso: diciembre-2003
Ubicación: Barcelona
Mensajes: 985
Antigüedad: 20 años, 5 meses
Puntos: 6
Modulo SQL Autogenerado

Hola a todos, estoy trabajando en un proyecto e intento hacer lo siguiente, me gustaría hacer un código en un módulo que realizase consultas, actualizaciones y añadiese registros a una BD para evitar repetir el código una y otra vez. Pero el problema que tengo es que no tengo ni idea de como hacerlo, es decir, genero el código lo llamo desde un formulario, pero como leches me llevo los datos???

Les pongo el código para que lo vean:

Public Sub Extrae(Tabla As String, Campos As String, Ordenadas As Boolean, CampoOrden As String, Ascendente As Boolean, Condicion As String)
'Antes de nada abrimos la base de datos
Dim DB As AdoDB.Connection
Set DB = New AdoDB.Connection
DB.CursorLocation = adUseClient
DB.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & BasePath & ";User Id=admin;Password=;"
DB.Open

'Comezamos a generar la consulta
SQL = "Select " & Campos & " From " & Tabla

'Si hay alguna condición la insertamos
If Condicion <> "" Then
SQL = SQL & " Where " & Condicion
End If

'Si hay algún orden lo insertamos
If Ordenadas = True Then
SQL = SQL & " Order By " & CampoOrden
If Ascendente = True Then
SQL = SQL & " ASC"
Else
SQL = SQL & " DESC"
End If
End If

'Declaramos el Recordset
Dim RS As AdoDB.Recordset
Set RS = New AdoDB.Recordset
RS.Open SQL, DB, 3, 1
End Sub


Espero que tengan una idea de lo que quiero hacer, el problema es que consulta, perfectamente pero, una vez hecha la consulta, ¿como puedo consultar los datos que ha generado?

Saludos y gracias...
  #2 (permalink)  
Antiguo 21/07/2005, 02:24
 
Fecha de Ingreso: mayo-2005
Mensajes: 93
Antigüedad: 19 años
Puntos: 1
yo tengo hecho un formulario que tira de una base de datos para obtener listados en exce.

Para ello realice una base de datos con los siguientes campos.
NomListado -> Nombre del listado para que lo vea el usuario
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY

En los que aparecen la parte de la instrucción SQL necesaria en cada caso. El problema como tu bien dices son los parámetros de la parte where, pero se soluciona con otra tabla (en mi caso es un par de campos ya que solo pueden seleccionarse fechas y se encuentran en lamisma tabla) en la que aparezcan detallados los campos de la base de datos preparados para ser asignados. Es decir, aparecerían todos los campos de la base de datos que pueden ser seleccionados por algún criterio.
Te recomiendo además que aparezca una columna asociada en la que puedas tener el tipo de dato que se pueda relacionar por dos razones:
1.- como validación, y así para que no te pete la sentencia SQL
2.- Para añadir a la sentencia SQL los caracteres que delimitan los tipos de datos (mira al final de la respuesta qu lo entenderás mejor)

Una vez seleccionado el listado, aparecerían los campos susceptibles de ser pasados por parámetros y que has metido en la segunda tabla.
(Te recomiendo que realices una matriz de controles para este punto)

Y ahora soplo te queda juntar todo.

Es decir, vamos a poner un ejemplo:

SELECT
SELECT *
FROM
FROM TABLA1, TABLA2
WHERE
TABLA1.COD = TABLA2.COD
GROUP BY
""
HAVING
""
ORDER BY
TABLA1.COD, TABLA2.COD

Y los datos de la segunda tabla (obviamente tendrías que hacer un recordset para obtener todos los posibles parámetros para dcada sentencia)

Aqui aparecen las diferentes líneas que aparecerían al recorrer el recordset

TABLA1.NOM =
TABLA2.NOM =

Solo te quedaría añadir los AND u OR correspondientes, y sobre todo, poner los caracterres especiales que delimitan el tipo de datos que se va a pasar, y que te he recomendado que añadas la columna antes a la base de datos, es decir...

'' en caso de string
## en caso de date
....

Con todo esto, lo que consigues es un generador de SQL sencillo para cualquier usuario, ya que solo tienen que seleccionar los campos por los que desean buscar y no generar la sentencia completa.

Espero que te sirva de algo, creo que la idea está bien desarrollada, aunque igual me he liado un poco...

Un saludo y suerte
__________________
No te hubieran dado la capacidad de soñar sin darte también la posibilidad de convertir tus sueños en realidad
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:52.