Insertar filas

25/05/2005 - 18:29 por ElVecinodeAllado | Informe spam
Hola, este es mi primer post y a la vez la primera vez que utilizo vb de
access contra sql server. Mi pregunta consta de dos preguntas a su vez:

1. ¿Cuando realizo una select, es necesario poner docmd.runsql var?
2. Como hago para recoger registros de una tabla e insertar esos registros
en otra.


gracias.

Preguntas similare

Leer las respuestas

#6 ElVecinodeAllado
26/05/2005 - 17:39 | Informe spam
Y como podria realizar una importacion de las tablas cada vez que use el
programa y al salir realizar una exportacion hacia el sql server con los
nuevos datos.

"Don Roque" escribió en el mensaje
news:
Bien, lo que intento decirte es que si estas familiarizado con la
operatoria del VBA que te da access para manejar sus propias tablas,
podes importar las tablas de SQL SERVER y despues usarlas como si
fuesen propias de tu DB.

Respuesta Responder a este mensaje
#7 Don Roque
26/05/2005 - 20:37 | Informe spam
Bueno, espero no ganarme el odio de la gente del foro por contestar una
duda de access en el foro de SQL SERVER.

Aca vamos.


1) create un ODBC que pegue contra la base de datos SQL SERVER con la
que queres trabajar
2) En la pantalla de la base de datos, selecciona TABLES
3) en el recuadro donde te aparecen las tablas, hace click con el boton
secundario y luego IMPORT en el menu contextual.
4) en el dialog box que se muestra, en el combo de abajo de todo (files
of type) selecciona la opcion "ODBC DATABASES()" Se va a abrir un nuevo
dialog box, en donde deberias poder elegir el ODBC creado en el punto
1. Dependiendo del tipo de autenticacion que tenga el usuario que
pusiste en el ODBC te puede llegar a preguntar la pwd.
5) En el proximo paso, se va a mostrar una ventana que va a mostrar
todas las tablas que cuenta la base de datos SQL SERVER a la que apunta
tu ODBC. Selecciona de esa lista las tablas que queres importar.

Una vez hecho esto, se genera un vinculo entre el ACCESS y el SQL
SERVER que se mantiene aunque vos cierres el access y lo vuelvas a
abrir. En otras palabras: Aunque vos cierres el access y lo vuelvas a
abrir la cantidad de veces que quieras (obviamente si no borras los
vinculos a las tablas que importaste!) vas a tener disponibles las
tablas que importaste.

Tene en cuenta que el ACCESS no genera una copia de la tabla en el
momento de hacer la importacion. Lo que hace es establecer un vinculo.
Por lo tanto, cuando vos en el access insertes, modifiques o borres un
registro; vas a ver que los cambios impactaron en el SQL SERVER. No vas
a necesitar ningun proceso adicional para que los cambios que haces en
el ACCESS se vean reflejados en el SQL SERVER (ni viceversa).

Ya que estamos, te comento: en el proyecto que estoy trabajando
actualmente, hay algo de este estilo, asi que aprovecho para mandarte
algo de codigo para que veas que del lado del VBA, las cosas son
absolutamente transparentes
(cuando veas este ejemplo, tene en cuenta que
"qryGetRecordsToInsertIntoEnigma" es un query almacenado en el access y
que "dbo_nloaddealid" es una tabla que importe de SQL SERVER en la que
inserto registros desde el codigo VBA)


Public Function fcnInsert() As Boolean

On Error GoTo Err
Dim rsInsertions As DAO.Recordset

Set rsInsertions CurrentDb.OpenRecordset("qryGetRecordsToInsertIntoEnigma")
While Not rsInsertions.EOF
InterfaceProcess rsInsertions.Fields("deal_id").Value,
rsInsertions.Fields("cust_id").Value,
rsInsertions.Fields("facility_id").Value, False
CurrentDb.Execute ("insert into dbo_nloaddealid (Deal_ID,
Cust_ID, Facility_ID, Changed) values (" &
CStr(rsInsertions.Fields("deal_id").Value) & ", " &
CStr(rsInsertions.Fields("cust_id").Value) & ", " &
CStr(rsInsertions.Fields("facility_id").Value) & ", 0)")
rsInsertions.MoveNext
Wend

fcnInsert = True
Exit Function
Err:
fcnInsert = False
End Function



Una aclaracion mas (que tal vez sea obvia): Si en el ejemplo que te
estoy pasando, en el SQL SERVER creo un trigger de insert en la tabla
nloaddealid; cada vez que el access inserte un registro en esa tabla;
el SQL SERVER va a ejecutar la logica del trigger. En definitiva: El
Access funciona como un cliente que termina consultando y modificando
directamente las tablas del SQL SERVER.

Con esto tenes para seguir?
Respuesta Responder a este mensaje
#8 Maxi
26/05/2005 - 20:53 | Informe spam
jajaj!! nooo para nada!! que levante la mano aquel que nunca uso Access? ;-)


Salu2
Maxi


"Don Roque" escribió en el mensaje
news:
Bueno, espero no ganarme el odio de la gente del foro por contestar una
duda de access en el foro de SQL SERVER.

Aca vamos.


1) create un ODBC que pegue contra la base de datos SQL SERVER con la
que queres trabajar
2) En la pantalla de la base de datos, selecciona TABLES
3) en el recuadro donde te aparecen las tablas, hace click con el boton
secundario y luego IMPORT en el menu contextual.
4) en el dialog box que se muestra, en el combo de abajo de todo (files
of type) selecciona la opcion "ODBC DATABASES()" Se va a abrir un nuevo
dialog box, en donde deberias poder elegir el ODBC creado en el punto
1. Dependiendo del tipo de autenticacion que tenga el usuario que
pusiste en el ODBC te puede llegar a preguntar la pwd.
5) En el proximo paso, se va a mostrar una ventana que va a mostrar
todas las tablas que cuenta la base de datos SQL SERVER a la que apunta
tu ODBC. Selecciona de esa lista las tablas que queres importar.

Una vez hecho esto, se genera un vinculo entre el ACCESS y el SQL
SERVER que se mantiene aunque vos cierres el access y lo vuelvas a
abrir. En otras palabras: Aunque vos cierres el access y lo vuelvas a
abrir la cantidad de veces que quieras (obviamente si no borras los
vinculos a las tablas que importaste!) vas a tener disponibles las
tablas que importaste.

Tene en cuenta que el ACCESS no genera una copia de la tabla en el
momento de hacer la importacion. Lo que hace es establecer un vinculo.
Por lo tanto, cuando vos en el access insertes, modifiques o borres un
registro; vas a ver que los cambios impactaron en el SQL SERVER. No vas
a necesitar ningun proceso adicional para que los cambios que haces en
el ACCESS se vean reflejados en el SQL SERVER (ni viceversa).

Ya que estamos, te comento: en el proyecto que estoy trabajando
actualmente, hay algo de este estilo, asi que aprovecho para mandarte
algo de codigo para que veas que del lado del VBA, las cosas son
absolutamente transparentes
(cuando veas este ejemplo, tene en cuenta que
"qryGetRecordsToInsertIntoEnigma" es un query almacenado en el access y
que "dbo_nloaddealid" es una tabla que importe de SQL SERVER en la que
inserto registros desde el codigo VBA)


Public Function fcnInsert() As Boolean

On Error GoTo Err
Dim rsInsertions As DAO.Recordset

Set rsInsertions > CurrentDb.OpenRecordset("qryGetRecordsToInsertIntoEnigma")
While Not rsInsertions.EOF
InterfaceProcess rsInsertions.Fields("deal_id").Value,
rsInsertions.Fields("cust_id").Value,
rsInsertions.Fields("facility_id").Value, False
CurrentDb.Execute ("insert into dbo_nloaddealid (Deal_ID,
Cust_ID, Facility_ID, Changed) values (" &
CStr(rsInsertions.Fields("deal_id").Value) & ", " &
CStr(rsInsertions.Fields("cust_id").Value) & ", " &
CStr(rsInsertions.Fields("facility_id").Value) & ", 0)")
rsInsertions.MoveNext
Wend

fcnInsert = True
Exit Function
Err:
fcnInsert = False
End Function



Una aclaracion mas (que tal vez sea obvia): Si en el ejemplo que te
estoy pasando, en el SQL SERVER creo un trigger de insert en la tabla
nloaddealid; cada vez que el access inserte un registro en esa tabla;
el SQL SERVER va a ejecutar la logica del trigger. En definitiva: El
Access funciona como un cliente que termina consultando y modificando
directamente las tablas del SQL SERVER.

Con esto tenes para seguir?

Respuesta Responder a este mensaje
#9 ElVecinodeAllado
27/05/2005 - 15:23 | Informe spam
Ok, muchas gracias.
"Don Roque" escribió en el mensaje
news:
Bueno, espero no ganarme el odio de la gente del foro por contestar una
duda de access en el foro de SQL SERVER.

Aca vamos.


1) create un ODBC que pegue contra la base de datos SQL SERVER con la
que queres trabajar
2) En la pantalla de la base de datos, selecciona TABLES
3) en el recuadro donde te aparecen las tablas, hace click con el boton
secundario y luego IMPORT en el menu contextual.
4) en el dialog box que se muestra, en el combo de abajo de todo (files
of type) selecciona la opcion "ODBC DATABASES()" Se va a abrir un nuevo
dialog box, en donde deberias poder elegir el ODBC creado en el punto
1. Dependiendo del tipo de autenticacion que tenga el usuario que
pusiste en el ODBC te puede llegar a preguntar la pwd.
5) En el proximo paso, se va a mostrar una ventana que va a mostrar
todas las tablas que cuenta la base de datos SQL SERVER a la que apunta
tu ODBC. Selecciona de esa lista las tablas que queres importar.

Una vez hecho esto, se genera un vinculo entre el ACCESS y el SQL
SERVER que se mantiene aunque vos cierres el access y lo vuelvas a
abrir. En otras palabras: Aunque vos cierres el access y lo vuelvas a
abrir la cantidad de veces que quieras (obviamente si no borras los
vinculos a las tablas que importaste!) vas a tener disponibles las
tablas que importaste.

Tene en cuenta que el ACCESS no genera una copia de la tabla en el
momento de hacer la importacion. Lo que hace es establecer un vinculo.
Por lo tanto, cuando vos en el access insertes, modifiques o borres un
registro; vas a ver que los cambios impactaron en el SQL SERVER. No vas
a necesitar ningun proceso adicional para que los cambios que haces en
el ACCESS se vean reflejados en el SQL SERVER (ni viceversa).

Ya que estamos, te comento: en el proyecto que estoy trabajando
actualmente, hay algo de este estilo, asi que aprovecho para mandarte
algo de codigo para que veas que del lado del VBA, las cosas son
absolutamente transparentes
(cuando veas este ejemplo, tene en cuenta que
"qryGetRecordsToInsertIntoEnigma" es un query almacenado en el access y
que "dbo_nloaddealid" es una tabla que importe de SQL SERVER en la que
inserto registros desde el codigo VBA)


Public Function fcnInsert() As Boolean

On Error GoTo Err
Dim rsInsertions As DAO.Recordset

Set rsInsertions > CurrentDb.OpenRecordset("qryGetRecordsToInsertIntoEnigma")
While Not rsInsertions.EOF
InterfaceProcess rsInsertions.Fields("deal_id").Value,
rsInsertions.Fields("cust_id").Value,
rsInsertions.Fields("facility_id").Value, False
CurrentDb.Execute ("insert into dbo_nloaddealid (Deal_ID,
Cust_ID, Facility_ID, Changed) values (" &
CStr(rsInsertions.Fields("deal_id").Value) & ", " &
CStr(rsInsertions.Fields("cust_id").Value) & ", " &
CStr(rsInsertions.Fields("facility_id").Value) & ", 0)")
rsInsertions.MoveNext
Wend

fcnInsert = True
Exit Function
Err:
fcnInsert = False
End Function



Una aclaracion mas (que tal vez sea obvia): Si en el ejemplo que te
estoy pasando, en el SQL SERVER creo un trigger de insert en la tabla
nloaddealid; cada vez que el access inserte un registro en esa tabla;
el SQL SERVER va a ejecutar la logica del trigger. En definitiva: El
Access funciona como un cliente que termina consultando y modificando
directamente las tablas del SQL SERVER.

Con esto tenes para seguir?

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida