Access - Ver una consulta de SQL en Access

 
Vista:
Imágen de perfil de fucken
Val: 6
Ha aumentado su posición en 9 puestos en Access (en relación al último mes)
Gráfica de Access

Ver una consulta de SQL en Access

Publicado por fucken (4 intervenciones) el 20/08/2018 05:16:33
Buen dia

tengo una base de datos en el servidor principal en SQL Server pero como no todos lo usuarios tienen acceso al servidor quiero migrar una consulta estatica desde SQL ,a un tabla o consulta en Access desde donde puedan acceder todos, la consulta no es pesada pero sobrepasa el millon de registros por lo que migrarla a excel no creo q sea optimo.

He consultado sobre "consulta de paso a través de" en access pero me gustaria saber si puedo hacerla mediante codigo

he intentado esto pero solo lo copiaria al recordset y lo que quiero es alimentar una tabla o consulta de visualizacion en access, alguna ayuda o sugerencia. gracias de antemano.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Public Sub ConexionBD1(Servidor, Base, query)
Set cN = New ADODB.Connection
Set BD1 = New ADODB.Recordset
Path = "Provider=SQLOLEDB; Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=" & Base & ";Data Source=" & Servidor
cN.Open Path
BD1.Open query, cN, adOpenKeyset, adLockOptimistic
End Sub
 
Sub c()
Servidor = "Equipo"
Base = "PRUEBA"
query = "Select * " & _
"from BD " & _
"where CONVERT(varchar(6),fecha,112)>='201601' " & _
"and  CONVERT(varchar(6),YearMes,112)>='201601' " & _
"and CV+CC+CJ>0 "
Call ConexionBD1(Servidor, Base, query)
End Sub
el codigo lo tengo en la macro del Access.
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

Ver una consulta de SQL en Access

Publicado por Anonimo (3316 intervenciones) el 21/08/2018 08:09:57
No entiendo lo que se plantea ….

Si se trata de generar una tabla en Access para consultar, lo ideal es que 'la genere el SQL Server' (es su función y en eso es muy eficiente) y tras crearla (o actualizarla o ….) como la tabla 'esta en Access' la conexión al SQL Server se vuelve innecesaria, Access provee de métodos propios para compartir datos.

Si lo que se desea es que cada usuario pueda acceder a una porción personalizada de los datos, lo adecuado es la consulta de paso a través, dado que se llama (o genera) desde Access pero se ejecuta en el SQL Server (por eso lo de 'paso a través') y con ello se logra esa eficiencia que es imposible lograr desde Access.

Por si existen dudas:
La necesidad: Se precisan datos históricos del catastro.....

Las opciones:

.- Se puede pedir a un empleado especializado en ello que nos envíe esa información (solo tenemos que indicarle que deseamos)

.- Se puede intentar 'por cuenta propia' así que solicitamos que nos transfieran TODA la información (en bruto y sin refinar) para que nosotros (cuando dispongamos físicamente de toda ella) apliquemos con nuestra metodología esa misma búsqueda.

Aplicar el método que mejor se domine (cuando no se pueda aplicar el mas eficiente).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Ver una consulta de SQL en Access

Publicado por jose (830 intervenciones) el 23/08/2018 14:01:06
hOLA

SI has accedido a la tabla y creas un recorset teines ya hecho lo mas complicado

a partir de aqui tienes que crear una tabla con CREATE TABLE
PASOS :
1 MIRAR SI LA TABLA EXISTE Y si existe borrarla y despues crearla de nuevo :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Function CrearTabla()
 
' Declaramos las variables
 
Dim DB As Database
Dim TB As TableDef
Dim FL1 As Field
Dim FL2 As Field
Dim FL3 As Field
 
' Activamos la BD
 
Set DB = CurrentDb()
 
' Vemos si la tabla NUEVA existe en la BD, si existe la borramos
 
For Each TB In DB.TableDefs
If TB.Name = "NUEVA" Then
DB.TableDefs.Delete TB.Name
End If
Next TB
 
' Creamos la tabla
 
Set TB = DB.CreateTableDef("NUEVA")
 
' Creamos los campos
 
Set FL1 = TB.CreateField("CIF", dbText, 9)
Set FL2 = TB.CreateField("CTA", dbText, 10)
Set FL3 = TB.CreateField("IMPORTE", dbDouble)
 
' Añadimos los campos a la tabla
 
TB.Fields.Append FL1
TB.Fields.Append FL2
TB.Fields.Append FL3
TB.Fields.Refresh
 
' Añadimos la tabla a la BD
 
DB.TableDefs.Append TB
DB.TableDefs.Refresh
 
End Function



--------------

luego con INSERT INTO VAS INTRODUCIENDO LOS DATOS A LA NUEVA TABLA

POR EJEMPLO

REM CON ADO------------------------------------------
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
'Dim rs As Recordset
'Dim CON As Connection
 
 
Set rs = CreateObject("ADODB.RecordSet")
Set CON = Application.CurrentProject.Connection
     C10 = ""
 
 
       C10 = C10 & " INSERT INTO NOMBRETABLA ("
       C10 = C10 & " FECHA,"
       C10 = C10 & " NUMEASIENTO,"
       C10 = C10 & " CUENTA,"
       C10 = C10 & " DOCUMENTO,"
       C10 = C10 & " CONCEPTO,"
       C10 = C10 & " DEBE,"
       C10 = C10 & " HABER,"
       C10 = C10 & " TITULAR,"
       C10 = C10 & " TIPOASIENTO,"
       C10 = C10 & " ANNO )"
 
         C10 = C10 & "SELECT"
         C10 = C10 & " #" & Format(LFECHA, "mm/dd/yyyy") & "# AS Expr1,"
         C10 = C10 & " " & Str$(NUMASI) & " AS Expr2,"
         C10 = C10 & " '" & LCUENTA & "'AS Expr3,"
         C10 = C10 & " '" & Nz(LDOCUMENTO, " ") & "' AS Expr4,"
         C10 = C10 & "  '" & Nz(LCONCEPTO, " ") & "' AS Expr5,"
         C10 = C10 & "  " & Str$(Nz(LDEBE, 0)) & " AS Expr6,"
         C10 = C10 & " " & Str$(Nz(LHABER, 0)) & " AS Expr7,"
         C10 = C10 & "  " & Str$(Forms![FPRINCIPAL]![TIT]) & "  AS Expr8,"
         C10 = C10 & " '" & LTIPOASIENTO & "' AS Expr9,"
         C10 = C10 & "  '" & Forms![FPRINCIPAL]![an] & "' AS Expr10;"
 
 
   consulta = c10
 
rs.Open consulta, CON
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
Imágen de perfil de fucken
Val: 6
Ha aumentado su posición en 9 puestos en Access (en relación al último mes)
Gráfica de Access

Ver una consulta de SQL en Access

Publicado por fucken (4 intervenciones) el 13/09/2018 05:50:45
doc, que tal gracias por la ayuda.
Una consulta, habria una manera de insertar de golpe el contenido del recordset en la tabla access? sin tener q recorrer cada registro?
algo similar a lo que hace el "copyfromrecordset" en caso de excel
o una consulta de " insert into...select" etc. solo q la data la tengo en el recordset.

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