Tengo una aplicacion hecha en visual basic..la cual exporta datos de una base de datos de progress a sql server..el problema es que me esta duplicado la informacion como si tuviera un ciclo indefinido..es decir tengo un rango de tiendas de la 1 a la 79 y debe de recorrerlo solo una vez , pero lo esta haciendo por lo menos 5 veces...alguna idea de por que este pasando esto...anexo codigo..saludos y gracias por sus respuestas
Sub compras(Fechac As String, Fechaf As String, sid As Integer)
Dim cn As Object
Dim con As Object
'Dim cfecha As Date
' crea un objeto Connection
Set cn = CreateObject("ADODB.Connection")
Set con = CreateObject("ADODB.Connection")
' IMPORTANTE: Cadena de conexión a usar
cn.ConnectionString = "Driver={Progress Openedge 10.1A Driver};DSN=PROGRESS;DB=pace;UID=sysprogress;PWD=p assword;HOST=192.168.10.6;PORT = 2580;"
con.ConnectionString = "Provider=SQLOLEDB;Data Source=" & _
"192.168.10.20; user id=sa; password=stm01;"
'Provider=SQLOLEDB;Initial Catalog=Inventarios;Data Source=" & _
' "192.168.10.3; user id=sa; password=3845;"
' verifica que los parámetros no estén vacios
supid = "ord_0." & """sup-id"""
origqty = "oritem_0." & """orig-qty"""
' fech = "Format(ord_0.cdate, " & """mm/dd/yyyy"")"
SQL = "SELECT ord_0.sid, ord_0.onum, " & supid & ", ord_0.cdate, ord_0.ctime, ord_0.posted, ord_0.comment, ord_0.completed, oritem_0.line, oritem_0.part, oritem_0.pack, oritem_0.pccost, oritem_0.pcost, inv_0.costave, " & origqty & ", oritem_0.totrec, " & origqty & "*oritem_0.pack AS 'PaqOrd', oritem_0.totrec*oritem_0.pack AS 'PaqRec' FROM PUB.inv inv_0, PUB.ord ord_0, PUB.oritem oritem_0 WHERE ord_0.sid = oritem_0.sid AND ord_0.onum = oritem_0.onum AND ((inv_0.sid=1) AND (inv_0.line=oritem_0.line) AND (inv_0.part=oritem_0.part) AND ord_0.posted >= {d '2012-01-01'} AND ord_0.posted <= {d '2012-01-31'} )"
' variable para al rec de ado
Dim rst As Object
Dim rs As Object
' abre la conexión a la base de datos
cn.Open
con.Open
'SQL.Connection = con
' crea un nuevo objeto recordset
Set rst = CreateObject("ADODB.Recordset")
Set rs = CreateObject("ADODB.Recordset")
' Ejecuta el sql para llenar el recordset
rst.Open SQL, cn
' variables para los indices de las filas y columnas
c = 0
' recorre todo el recordset hasta el final
Do While Not rst.EOF
sid = rst.Fields(c)
onum = rst.Fields(c + 1)
supid = rst.Fields(c + 2)
cfech = Format(rst.Fields(c + 3), "mm/dd/yyyy")
cfecha = "'" & cfech & "'"
ctime = rst.Fields(c + 4)
poste = Format(rst.Fields(c + 5), "mm/dd/yyyy")
posted = "'" & poste & "'"
comment = rst.Fields(c + 6)
comment = Replace(comment, "'", "''")
'comment = "intro"
complete = Format(rst.Fields(c + 7), "mm/dd/yyyy")
completed = "'" & complete & "'"
Line = rst.Fields(c + 8)
part = rst.Fields(c + 9)
pack = rst.Fields(c + 10)
pccost = rst.Fields(c + 11)
pcost = rst.Fields(c + 12)
costave = rst.Fields(c + 13)
origqty = rst.Fields(c + 14)
totrec = rst.Fields(c + 15)
PaqOrd = rst.Fields(c + 16)
PaqRec = rst.Fields(c + 17)
'QP = rst.Fields(c + 18)
SQ1 = "INSERT INTO [Compras].[dbo].[compras]([sid],[onum],[supid],[cdate],[ctime],[posted],[comment],[completed],[line],[part],[pack],[pccost],[pcost],[costave],[origqty],[totrec],[PaqOrd],[PaqRec]) Values (" & sid & ", " & onum & " ,'" & supid & "', " & cfecha & ", '" & ctime & "', " & posted & ",'" & comment & "', " & completed & ",'" & Line & "', '" & part & "', " & pack & ", " & pccost & ", " & pcost & ", " & costave & ", " & origqty & ", " & totrec & ", " & PaqOrd & ", " & PaqRec & ")"
'SQL1.ExecuteNonQuery , con
rs.Open SQ1, con
' Siguiente registro
rst.MoveNext
Loop
' cierra y descarga las referencias
On Error Resume Next
rst.Close
cn.Close
rs.Close
con.Close
Set cn = Nothing
Set rst = Nothing
Set con = Nothing
Set rs = Nothing
End Sub