Problemas al ejecutar un "objeto command" para inserción de datos en tablas
Tengo un problema al tratar de ejecutar un objeto command para insertar datos en una tablas desde otra. Las conexiones son buenas y probadas. NO tengo ni idea de como ya que no tengo mucho experiencia con VB.
Te mando el código de ejemplo.
Agradeceré una pronto ayuda.
Option Explicit
Dim Conecta As ADODB.Connection
Dim conecta1 As ADODB.Connection
Dim rs As New ADODB.Recordset
Dim rs1 As New ADODB.Recordset
Dim cmd As ADODB.Command
______________________________________________________
----------Esto no funciona ya que el objeto cmd que se trata de ejecutar solo tiene como conexión activa 1 tabla a la vez, como el sql usa 2 tablas en un query anidado. He ahí el problema. --------------------
Private Sub Command1_Click()
Dim sql As String
sql = "INSERT INTO METEO.PERSO(NOMBRE) SELECT NOMBRE FROM NOMINA"
cmd.CommandText = sql
cmd.Execute
sql = "commit"
cmd.CommandText = sql
cmd.Execute
MsgBox "Registros Insertados", vbExclamation, "Atención"
End Sub
Private Sub Form_Load()
Set Conecta = New ADODB.Connection
Set conecta1 = New ADODB.Connection
Set cmd = New ADODB.Command
Set rs = New ADODB.Recordset
Set rs1 = New ADODB.Recordset
Set cmd.ActiveConnection = Conecta
Conecta.ConnectionString = "DSN=METEO;UID=cbadilla;Password=aaaaaa"
Conecta.Open
conecta1.ConnectionString = "DSN=planilla;UID"
conecta1.Open
End Sub
----------Así funciona pero solo para un registro, y como son como 30 campos seria muy difícil meterlo, tengo que contar primero cuantos registros tiene la tabla nomina y hacer un ciclo, especificar los nombres de los campos, etc. Etc.
----------------------------------------------------------
Private Sub Command1_Click()
rs.Open "Select * From nomina", conecta1, adOpenStatic, adLockOptimistic
sql = "INSERT INTO METEO.PERSO(NOMBRE) VALUES(" + "'" + rs!NOMBRE + "'" + ")"
Text2.Text = sql
cmd.CommandText = sql
cmd.Execute
sql = "commit"
cmd.CommandText = sql
cmd.Execute
End Sub
Te mando el código de ejemplo.
Agradeceré una pronto ayuda.
Option Explicit
Dim Conecta As ADODB.Connection
Dim conecta1 As ADODB.Connection
Dim rs As New ADODB.Recordset
Dim rs1 As New ADODB.Recordset
Dim cmd As ADODB.Command
______________________________________________________
----------Esto no funciona ya que el objeto cmd que se trata de ejecutar solo tiene como conexión activa 1 tabla a la vez, como el sql usa 2 tablas en un query anidado. He ahí el problema. --------------------
Private Sub Command1_Click()
Dim sql As String
sql = "INSERT INTO METEO.PERSO(NOMBRE) SELECT NOMBRE FROM NOMINA"
cmd.CommandText = sql
cmd.Execute
sql = "commit"
cmd.CommandText = sql
cmd.Execute
MsgBox "Registros Insertados", vbExclamation, "Atención"
End Sub
Private Sub Form_Load()
Set Conecta = New ADODB.Connection
Set conecta1 = New ADODB.Connection
Set cmd = New ADODB.Command
Set rs = New ADODB.Recordset
Set rs1 = New ADODB.Recordset
Set cmd.ActiveConnection = Conecta
Conecta.ConnectionString = "DSN=METEO;UID=cbadilla;Password=aaaaaa"
Conecta.Open
conecta1.ConnectionString = "DSN=planilla;UID"
conecta1.Open
End Sub
----------Así funciona pero solo para un registro, y como son como 30 campos seria muy difícil meterlo, tengo que contar primero cuantos registros tiene la tabla nomina y hacer un ciclo, especificar los nombres de los campos, etc. Etc.
----------------------------------------------------------
Private Sub Command1_Click()
rs.Open "Select * From nomina", conecta1, adOpenStatic, adLockOptimistic
sql = "INSERT INTO METEO.PERSO(NOMBRE) VALUES(" + "'" + rs!NOMBRE + "'" + ")"
Text2.Text = sql
cmd.CommandText = sql
cmd.Execute
sql = "commit"
cmd.CommandText = sql
cmd.Execute
End Sub
Respuesta de athrarn
1