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

Uso de INSERT INTO en Visual Basic

Estas en el tema de Uso de INSERT INTO en Visual Basic en el foro de Visual Basic clásico en Foros del Web. Hola a todos, soy nuevo en la comunidad, mi problema es el siguiente: Tengo 2 bases de datos en diferente maquina, y necesito que de ...
  #1 (permalink)  
Antiguo 27/08/2006, 14:13
 
Fecha de Ingreso: agosto-2006
Mensajes: 5
Antigüedad: 17 años, 7 meses
Puntos: 0
Uso de INSERT INTO en Visual Basic

Hola a todos, soy nuevo en la comunidad, mi problema es el siguiente:

Tengo 2 bases de datos en diferente maquina, y necesito que de BD1 se inserten registros en BD2, esto por medio de la red local.

he estado investigando y lo que pude averiguar fue que el comando INSERT INTO de sql puede servirme y no he encontrado un ejemplo en donde se maneje una ruta que sea para otra pc, no se como agregar la ruta para la base destino por favor si alguien me pued decir como hacerlo se los agradeceria infinitamente.

esto es lo que hice:

Private Sub Form_Load()
Set SFLAServ = New ADODB.Connection
With SFLACte
' Cursor en Cliente para poder usar un DataGrid
.CursorLocation = adUseClient
' Abro la conexión con la base de datos usando un DSN
.Open "DSN=VSFLAC"
End With
End Sub

Private Sub cmdEnviar_Click()
Dim SQL As String
Dim rs As ADODB.Recordset

SQL = "INSERT INTO ventascon IN 'Z:\SFLADB.mdb' SELECT * FROM Ventas WHERE fecha >=" & FEIN & " and fecha <= " & FEFI & ""

Set rs = SFLAServ.Execute(SQL)
End Sub


NOTA: la ruta de la BD2 la puse asi porque intente ponerla como unidad de red. O si se pudiera usar con DSN o algo similar seria genial. De antemano les agradezco.
  #2 (permalink)  
Antiguo 28/08/2006, 09:13
Avatar de elsaky  
Fecha de Ingreso: junio-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 53
Antigüedad: 17 años, 10 meses
Puntos: 0
te mando un pequeño ejemplo con bases acces, suerte


Dim Cn1 As ADODB.Connection
Dim Cn2 As ADODB.Connection
Dim rs As ADODB.Recordset
Dim cmd As ADODB.Command

Private Sub Form_Load()
'conectas base local
Set Cn1 = New ADODB.Connection
With Cn1
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "c:\xxx\base.mdb;Persist Security Info=False"
.CommandTimeout = 30
.ConnectionTimeout = 30
.Open
End With

'conectas base en red
Set Cn2 = New ADODB.Connection
With Cn2
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "z:\xxx\base.mdb;Persist Security Info=False"
.CommandTimeout = 30
.ConnectionTimeout = 30
.Open
End With

'seleccionas datos de base en red
Set rs = New ADODB.Recordset
With rs
.ActiveConnection = Cn2
.CursorLocation = adUseClient
.CursorType = adOpenKeyset
.Source = "select * from tabla"
.Open

'haces un bucle para ver los datos e ir pasandolos
Do While Not rs.EOF

'insertas los registros en base local
Set cmd = New ADODB.Command
With cmd
.ActiveConnection = Cn1
.CommandType = adCmdText
.CommandText = "insert into tabla values(rs!campo1, rs!campo2)"
.Execute
End With
Set cmd = Nothing

rs.MoveNext
Loop
End Sub
End With
  #3 (permalink)  
Antiguo 28/08/2006, 13:34
 
Fecha de Ingreso: agosto-2006
Mensajes: 5
Antigüedad: 17 años, 7 meses
Puntos: 0
gracias voy a probarlo, aunque me hubiera agradado mas si fuera con SQL
  #4 (permalink)  
Antiguo 28/08/2006, 13:44
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Lo que elsaky hace es hacer un select de la base1, barrerselo e ir insertando en la base2 registro por registro

Si utilizas SQL Server y tienes dos bases en el mismo servidor puedes hacer un INSERT INTO SELECT en vez de un INSERT INTO VALUES, es decir, que metes una sentencia select dentro del insert into y lo que te arroje como resultado el select es lo que se va a insertar, y allí puedes decir que el select sea de base1 y se inserte en base2; todo esto estableciendo una sola conexion a base

Si tienes dos bases en dos servidores no te va a tocar que aplicar lo que propone elsaky, abrir una conexion al servidor origen, hacer el select, barrertelo e insertar en el servidor2 estableciendo una segunda conexion
  #5 (permalink)  
Antiguo 29/08/2006, 13:39
 
Fecha de Ingreso: agosto-2006
Mensajes: 5
Antigüedad: 17 años, 7 meses
Puntos: 0
ok, entonces se quedara asi, gracias por sus consejos y solucion.
  #6 (permalink)  
Antiguo 30/08/2006, 03:20
 
Fecha de Ingreso: agosto-2006
Mensajes: 5
Antigüedad: 17 años, 7 meses
Puntos: 0
heme aqui de nuevo con este rollo, ya lo adapte a como me dijeron pero ahora me sale un error que dice "No coinciden los tipos de datos en la expresion de criterios", a que se debe ese error?

este es comando

.CommandText = "INSERT INTO VentasCon VALUES ( '" & rs!FECHA & "' , '" & rs!No_vent & "' , '" & rs!Clave_P & "' " _
& ", '" & rs!Clave_c & "' , '" & Val(rs!Cantidad) & "' , '" & rs!Uni & "' " _
& ", '" & rs!Descripcion & "' , '" & Val(rs!Precio_u) & "' , '" & Val(rs!total) & "' " _
& ", '" & rs!Factura & "' , '" & rs!FolioReal & "' , '" & Val(rs!totiva) & "' , '" & Val(rs!Costo) & "')"

Última edición por SkyWalkerGC; 30/08/2006 a las 03:42
  #7 (permalink)  
Antiguo 30/08/2006, 05:23
Avatar de elsaky  
Fecha de Ingreso: junio-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 53
Antigüedad: 17 años, 10 meses
Puntos: 0
es porque los campos que son de texto van entre comilla simple y los que son numericos no llevan nada ej: el campo Costo seria asi ... ," & rs!costo & ", ... y un campo de texto seria asi ....,'" & rs!Descripcion & "',...

saludos
  #8 (permalink)  
Antiguo 30/08/2006, 11:52
 
Fecha de Ingreso: agosto-2006
Mensajes: 5
Antigüedad: 17 años, 7 meses
Puntos: 0
y supongo que el de fecha va entre # pero un boleano como lo marco, ¿texto o numero?


bueno una disculpa por tanta molestia, pero ya lo resolvi, resulta que mi boleano en la base de datos lo tengo como 0 y 1 y por eso no me aceptaba el True&False

GRACIAS elsaky y Developer9 ya estoy del otro lado

Última edición por SkyWalkerGC; 30/08/2006 a las 12:14
  #9 (permalink)  
Antiguo 30/08/2006, 12:39
Avatar de elsaky  
Fecha de Ingreso: junio-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 53
Antigüedad: 17 años, 10 meses
Puntos: 0
como numero, true=1 y false=0
saludos
  #10 (permalink)  
Antiguo 02/12/2006, 08:43
 
Fecha de Ingreso: marzo-2006
Mensajes: 3
Antigüedad: 18 años, 1 mes
Puntos: 0
Pregunta help me!!!!!!!!!!!

yo pongo toda la instruccionpara guardarlo y no me aparece ningun error pero al verificar que lo de de alta en la base no lo da.

adodc.record set.addnew
Adodc1.recordsourse = " insert into empleados values ("",...)"

es en sql creo k si es asi si no les agradeseroa mucho su ayuda
  #11 (permalink)  
Antiguo 04/02/2008, 16:48
 
Fecha de Ingreso: febrero-2008
Mensajes: 1
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Uso de INSERT INTO en Visual Basic

buenas les tengo una pregunta!!
estoy haciendo unas cargas y derrepente empezo a poner el mismo codigo......
aca abajo les dejo parte del codigo:

rs.Open "SELECT * FROM mstr_cli", cn, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
rs.MoveFirst
While Not rs.EOF
If Txtrs.Text = rs!cli_rs Then
MsgBox "cliente ya está ingresado", , "ERROR"
rs.Close
Exit Sub
End If
rs.MoveNext
Wend
rs.Close
rs.Open "INSERT INTO mstr_cli VALUES ('" & Txtcod & "','" & Txtrs & "', '" & TxtDom & "', '" & Txtloc & "', '" & Txtcp & "', '" & Txttel1 & "','" & Txttel2 & "','" & Txtcuit & "', '" & CmbIVA & "', '" & Txtcont & "')", cn, adOpenDynamic, adLockOptimistic
unload Me
end if

previamente a esto lo que hago es cargar en txtcod el numero consecutivo al registro anteriormente cargado......el problema es que llego a 61 y empezo a repetir el codigo 62 en todas las demas cargas siguiente....

si alguien tiene idea de porque pasa esto le agradeceria que me lo hiciese sabe....

desde ya muchas gracias
  #12 (permalink)  
Antiguo 20/05/2011, 06:08
 
Fecha de Ingreso: mayo-2011
Mensajes: 2
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Uso de INSERT INTO en Visual Basic

Cita:
Iniciado por SkyWalkerGC Ver Mensaje
Hola a todos, soy nuevo en la comunidad, mi problema es el siguiente:

Tengo 2 bases de datos en diferente maquina, y necesito que de BD1 se inserten registros en BD2, esto por medio de la red local.

he estado investigando y lo que pude averiguar fue que el comando INSERT INTO de sql puede servirme y no he encontrado un ejemplo en donde se maneje una ruta que sea para otra pc, no se como agregar la ruta para la base destino por favor si alguien me pued decir como hacerlo se los agradeceria infinitamente.

esto es lo que hice:

Private Sub Form_Load()
Set SFLAServ = New ADODB.Connection
With SFLACte
' Cursor en Cliente para poder usar un DataGrid
.CursorLocation = adUseClient
' Abro la conexión con la base de datos usando un DSN
.Open "DSN=VSFLAC"
End With
End Sub

Private Sub cmdEnviar_Click()
Dim SQL As String
Dim rs As ADODB.Recordset

SQL = "INSERT INTO ventascon IN 'Z:\SFLADB.mdb' SELECT * FROM Ventas WHERE fecha >=" & FEIN & " and fecha <= " & FEFI & ""

Set rs = SFLAServ.Execute(SQL)
End Sub


NOTA: la ruta de la BD2 la puse asi porque intente ponerla como unidad de red. O si se pudiera usar con DSN o algo similar seria genial. De antemano les agradezco.



Hola tendrías que probar con abrir desde que base de datos vas a pasar los datos a la base de datos que tenes en la unidad Z. Saludos Leog2011
  #13 (permalink)  
Antiguo 20/05/2011, 06:12
 
Fecha de Ingreso: mayo-2011
Mensajes: 2
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Uso de INSERT INTO en Visual Basic

Tendrías que hacer una conexion primero con la base de datos desde donde vas a pasar los datos a la base que tenes en unidad z. Saludos Leog2011
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

SíEste tema le ha gustado a 3 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 05:48.