Copy table

15/11/2005 - 05:46 por Karlos Traveceras | Informe spam
Mis estimados:

Estoy trabajando con tablas de sql 2000 y por medio manipulo la informacion
por medio de sqlcommands... insert update into.. etc..

ahora me veo en la necesidad de copiar tablas en tiempo de ejecucion y
dejarlas con otro nombre.. dentro de la misma base de datos..

y por mas q le he buscado.. no he podido hacerle..

les pongo el codigo si de algo sirve

de antemano muchas gracias

Public CadenaConexion As String = "data source=TRAVECERAS; Initial
Catalog=T-Tiger; integrated security=SSPI;persist security info=True"

dbConexion = New Data.SqlClient.SqlConnection(CadenaConexion)

dbConexion.Open()

cmdtext = "CREATE TABLE A_empresas SELECT * FROM empresas "

Dim cmdsql As New SqlCommand(cmdtext, dbConexion)
cmdsql.ExecuteNonQuery()

Preguntas similare

Leer las respuestas

#1 SoftJaén
15/11/2005 - 13:57 | Informe spam
"Karlos Traveceras" escribió:

me veo en la necesidad de copiar tablas en tiempo de ejecucion y
dejarlas con otro nombre.. dentro de la misma base de datos..




Hola, Carlos:

Si solamente deseas crear una nueva tabla, con la estructura y los datos (no
los índices) de otra tabla existente, simplemente tienes que ejecutar una
consulta SQL de creación de tabla mediante la instrucción «SELECT ... INTO».
Para ello, puedes utilizar el método «ExecuteNonQuery» para ejecutar la
siguiente consulta:

cmdtext = "SELECT * INTO A_empresas FROM [empresas]"

Si de camino deseas obtener el número de registros que se han copiado,
ejecuta el comando de la siguiente manera:

Dim cmdsql As New SqlCommand

With cmdsql
.CommandText = cmdtext
.CommandType = CommandType.Text
.Connection = dbConexion

' Ejecutamos el comando
Dim regAfectados As Integer
regAfectados = .ExecuteNonQuery()

' Mostramos el número de registros afectados
MessageBox.Show(regAfectados.ToString)
End With

Para evitar que se puede producir alguna excepción, ejecuta el código dentro
de un bloque Try ... End Try.


Un saludo

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.
Respuesta Responder a este mensaje
#2 Karlos Traveceras
15/11/2005 - 21:12 | Informe spam
muchas gracias mi estimado..

funciono a la perfeccion.. solo una duda.. si yo quisiera copiar la tabla
pero sin informacion.. cual seria el procedimiento..

gracias de nuevo..



"SoftJaén" wrote:

"Karlos Traveceras" escribió:
>
> me veo en la necesidad de copiar tablas en tiempo de ejecucion y
> dejarlas con otro nombre.. dentro de la misma base de datos..
>

Hola, Carlos:

Si solamente deseas crear una nueva tabla, con la estructura y los datos (no
los índices) de otra tabla existente, simplemente tienes que ejecutar una
consulta SQL de creación de tabla mediante la instrucción «SELECT ... INTO».
Para ello, puedes utilizar el método «ExecuteNonQuery» para ejecutar la
siguiente consulta:

cmdtext = "SELECT * INTO A_empresas FROM [empresas]"

Si de camino deseas obtener el número de registros que se han copiado,
ejecuta el comando de la siguiente manera:

Dim cmdsql As New SqlCommand

With cmdsql
.CommandText = cmdtext
.CommandType = CommandType.Text
.Connection = dbConexion

' Ejecutamos el comando
Dim regAfectados As Integer
regAfectados = .ExecuteNonQuery()

' Mostramos el número de registros afectados
MessageBox.Show(regAfectados.ToString)
End With

Para evitar que se puede producir alguna excepción, ejecuta el código dentro
de un bloque Try ... End Try.


Un saludo

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.




Respuesta Responder a este mensaje
#3 Pedro Luna Montalvo, [MVP VB.NET]
16/11/2005 - 03:09 | Informe spam
Saludos Karlos,

Seguro que Enrique se le ocurre otra forma de resolver esto, sin embargo,
por el momento sugiero algo.
Para que se cree la tabla, pero sin datos, usa el comando con una sentencia
WHERE siempre falsa:

cmdtext = "SELECT * INTO A_empresas FROM [empresas] WHERE 1=0"


Saludos,
Pedro Luna Montalvo, [MVP VB.NET]
Gye, Ecu

"Karlos Traveceras" escribió en
el mensaje news:
muchas gracias mi estimado..

funciono a la perfeccion.. solo una duda.. si yo quisiera copiar la tabla
pero sin informacion.. cual seria el procedimiento..

gracias de nuevo..



"SoftJaén" wrote:

"Karlos Traveceras" escribió:
>
> me veo en la necesidad de copiar tablas en tiempo de ejecucion y
> dejarlas con otro nombre.. dentro de la misma base de datos..
>

Hola, Carlos:

Si solamente deseas crear una nueva tabla, con la estructura y los datos
(no
los índices) de otra tabla existente, simplemente tienes que ejecutar una
consulta SQL de creación de tabla mediante la instrucción «SELECT ...
INTO».
Para ello, puedes utilizar el método «ExecuteNonQuery» para ejecutar la
siguiente consulta:

cmdtext = "SELECT * INTO A_empresas FROM [empresas]"

Si de camino deseas obtener el número de registros que se han copiado,
ejecuta el comando de la siguiente manera:

Dim cmdsql As New SqlCommand

With cmdsql
.CommandText = cmdtext
.CommandType = CommandType.Text
.Connection = dbConexion

' Ejecutamos el comando
Dim regAfectados As Integer
regAfectados = .ExecuteNonQuery()

' Mostramos el número de registros afectados
MessageBox.Show(regAfectados.ToString)
End With

Para evitar que se puede producir alguna excepción, ejecuta el código
dentro
de un bloque Try ... End Try.


Un saludo

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.




Respuesta Responder a este mensaje
#4 SoftJaén
16/11/2005 - 10:08 | Informe spam
"Pedro Luna Montalvo, [MVP VB.NET]" escribió:

Seguro que Enrique se le ocurre otra forma de resolver esto ...



Hola, Pedro:

Pues no, para SQL Server no se me ocurre otra; siempre he utilizado la que
tú has comentado. Si fuera para Microsoft Access, el lenguaje SQL del motor
Jet también permite ésta otra:

cmdtext = "SELECT * INTO A_empresas FROM [empresas] WHERE False"

¡Pero vamos!, mientras que funcione correctamente la condición WHERE 1=0, no
hay por qué calentarse la cabeza con otra condición de búsqueda. :-)

Un saludo

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.
Respuesta Responder a este mensaje
#5 Karlos Traveceras
16/11/2005 - 17:58 | Informe spam
Muchas gracias mis estimados.. la verdad esto ha sido de bastante ayuda para
mi..



"SoftJaén" wrote:

"Pedro Luna Montalvo, [MVP VB.NET]" escribió:
>
> Seguro que Enrique se le ocurre otra forma de resolver esto ...

Hola, Pedro:

Pues no, para SQL Server no se me ocurre otra; siempre he utilizado la que
tú has comentado. Si fuera para Microsoft Access, el lenguaje SQL del motor
Jet también permite ésta otra:

cmdtext = "SELECT * INTO A_empresas FROM [empresas] WHERE False"

¡Pero vamos!, mientras que funcione correctamente la condición WHERE 1=0, no
hay por qué calentarse la cabeza con otra condición de búsqueda. :-)

Un saludo

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.



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