
Saludos
| |||
Indexar una tabla para agilizar una busqueda Hola, nunca he indexado una tabla y el poner un campo como indice no es el problema, si no como hago la relación con la otra tabla? tengo la tabla1 de la bD 1, con el campo Articulo como PK, este dato lo encuentro en la BD2 Tabla2, como hago esta relación? ![]() Saludos |
| |||
Para hacer referencia a tablas de otra BD , se usa el siguiente sistema: nombre_base_datos.nombre_usuario.tabla por ejemplo, yo me conecto a la bd encuestas, y haciendo esto select * from alovmap.dbo.amba_avenidas accedo a la tabla amba_avenidas de la bd alovmap. No sé si esto te sirve, porque la verdad que yo no uso los asistentes de SqlServer. Slds. |
| |||
Gracias ya lo puse comentas, pero no me agiliza la consulta, el primer problema que tenia era que se terminaba el tiempo de espera, ya no me marca ese eror y ya simplifique mi consulta, pero ahora me actualiza la consulta pero se queda pasmado y nunca pasa a la otra parte del proceso. |
| |||
Anexo el codigo: <% ' Selecciono Articulo que es la clave que el proveedor le pone al articulo Dim rsFact, sqlFact Dim rsFact_numRows Set rsFact = Server.CreateObject("ADODB.Recordset") rsFact.ActiveConnection = MM_ConFactura_STRING rsFact.Source = "SELECT Articulo FROM FacturaP WHERE Bandera='" & 0 & "'" rsFact.CursorType = 0 rsFact.CursorLocation = 2 rsFact.LockType = 1 rsFact.Open() rsFact_numRows = 0 %> <% Dim cmdUpDate, sqlUp Set cmdUpDate = Server.CreateObject("ADODB.Command") Dim rsCMKArt Dim rsCMKArt_numRows dim vardesc Set rsCMKArt = Server.CreateObject("ADODB.Recordset") rsCMKArt.ActiveConnection = MM_ConD84_STRING rsCMKArt.CursorType = 0 rsCMKArt.CursorLocation = 2 rsCMKArt.LockType = 1 While (NOT rsFact.EOF) vardesc= rsFact("Articulo") response.Write(vardesc) response.Write("<BR>") 'Selecciono de la BD CMKSIO TB ProveedorArticulos la clave que maneja cinemark donde coincida con la clave del articulo proveedor rsCMKArt.Source = "SELECT Articulo FROM cmksio.dbo.ProveedorArticulos Where IdArtProv = '" & TRIM(rsFact("Articulo")) & "'" rsCMKArt.Open() if Not rsCMKArt.EOF then 'Actualizo en FacturaP la clave de cmk sqlUp = "UPDATE FacturaP Set ClaveArtCMK= ' " & rsCMKArt("Articulo") &" ' Where Articulo='" & TRIM(rsFact("Articulo")) & " ' " cmdUpDate.ActiveConnection = MM_ConFactura_STRING cmdUpdate.CommandType = 1 cmdUpDate.CommandText = sqlUp cmdUpDate.CommandTimeout = 0 cmdUpDate.Execute end if rsCMKArt.Close() rsFact.MoveNext Wend %> Alguna sugerencia?! |
| |||
unas mil mas o menos, es mucho? Mira ya reescribi el codigo pero no solucione mucho. Dim rs, sqlr Dim rs2,sqlr2 Dim cmdUpDate, sqlUp Set cmdUpDate = Server.CreateObject("ADODB.Command") Set rs = Server.CreateObject("ADODB.Recordset") Set rs2 = Server.CreateObject("ADODB.Recordset") sqlr= "SELECT Articulo FROM FacturaP WHERE Bandera='" & 0 & "'" rs.Open sqlr, MM_ConFactura_STRING While (NOT rs.EOF) sqlr2= "SELECT Articulo FROM cmksio.dbo.ProveedorArticulos Where IdArtProv = '" & TRIM(rs("Articulo")) & "' And Proveedor='PFSdeMéxico,S.A'" rs2.Open sqlr2, MM_ConD84_STRING if Not rs2.EOF then 'Actualizo en FacturaP la clave de cmk sqlUp = "UPDATE FacturaP Set ClaveArtCMK= ' " & rs2("Articulo") &" ' Where Articulo='" & TRIM(rs("Articulo")) & " ' " cmdUpDate.ActiveConnection = MM_ConFactura_STRING cmdUpdate.CommandType = 1 cmdUpDate.CommandText = sqlUp cmdUpDate.CommandTimeout = 0 cmdUpDate.Execute end if rs2.close() rs.movenext() Wend |
| |||
Ok, estoy probando el codigo solo haciendo una consulta, no estoy poniendo aun el update a la tabla FacturaP, y sigo en el infinito, podrias hecharle un vistaso a mi codigo haber si hay algo mal? sqlr= "SELECT Articulo FROM FacturaP WHERE Bandera='" & 0 & "'" rs.Open sqlr, MM_ConFactura_STRING dim miTabla miTabla = rs.GetRows rs.Close set rs = nothing MM_ConFactura_STRING.Close set MM_ConFactura_STRING = nothing for I = 0 to UBound(miTabla,2) for J = 0 to Ubound(miTabla, 1) 'Imprimo una celda para cada campo Response.Write("<TD>" & miTabla(J, I) & "</TD>") next Response.Write("</TR>") next |
| ||||
Ya sabes que solo trae un campo no?
Código:
for I = 0 to UBound(miTabla,2) response.write("<td>"&mitabla(0,j)&"</td>") next
__________________ "El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera." -- Ernest Hemingway |
| |||
?? ![]() Sorry, estoy leyedno acerca de vectores pero no los habia utilizado de esta forma?! ![]() |
| ||||
Perdon, sustituye la j por la I dentro del ciclo ![]() Si, es asi como tu dices, pero si sabes cuantos campos tienes no necesitas el for interno, basta con que mandes llamar al indice de dicho array con el numero del campo, recuerda que comienza siempre en 0, es por eso:
Código:
for I = 0 to UBound(miTabla,2) response.write("<td>"&mitabla(0,I)&"</td>") next
__________________ "El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera." -- Ernest Hemingway |
| ||||
O sea, los resultados si los imprime, el problema es con el update? Se un poco mas explicita porque asi nada mas es dificil adivinar.
__________________ "El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera." -- Ernest Hemingway |
| |||
no los imprime, por el momento tengo comentado el update Esto es lo unico que esta haciendo y desde aqui se queda en el limbo sqlr= "SELECT Articulo FROM FacturaP WHERE Bandera='" & 0 & "'" rs.Open sqlr, MM_ConFactura_STRING dim miTabla miTabla = rs.GetRows rs.Close set rs = nothing MM_ConFactura_STRING.Close set MM_ConFactura_STRING = nothing for I = 0 to UBound(miTabla,2) response.write(mitabla(0,I)&"<br>") next'While (NOT rs.EOF) |
| ||||
ok, haz esto y veamos cuantos registros tiene:
Código:
if isarray(mitabla) then response.write(uBound(mitabla,2)) end if response.end
__________________ "El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera." -- Ernest Hemingway |
| ||||
imposible..! Pon todo el codigo de este ASP, debe haber un error, o ni siquiera se termina de llenar el rs ![]() Salu2,
__________________ "El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera." -- Ernest Hemingway |
| |||
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%> <!--#include file="../Connections/ConFactura.asp" --> <!--#include file="../Connections/ConD84.asp" --> <% 'selecciono el rs que va a recorrer la tabla de facturas Dim rs, sqlr Dim rs2,sqlr2 Dim cmdUpDate, sqlUp Set cmdUpDate = Server.CreateObject("ADODB.Command") Set rs = Server.CreateObject("ADODB.Recordset") Set rs2 = Server.CreateObject("ADODB.Recordset") sqlr= "SELECT Articulo FROM FacturaP WHERE Bandera='" & 0 & "'" rs.Open sqlr, MM_ConFactura_STRING dim miTabla miTabla = rs.GetRows rs.Close set rs = nothing MM_ConFactura_STRING.Close set MM_ConFactura_STRING = nothing if isarray(mitabla) then response.write(uBound(mitabla,2)) end if response.end %> |
| ||||
Código:
Que tipo de dato es el campo Bandera?sqlr= "SELECT Articulo FROM FacturaP WHERE Bandera='" & 0 & "'" Si no es string sacale las comillas simples, no lo concatenes puedes pasarlo directo:
Código:
fijate si pasa de la consulta, para mi el problema es que ni siquiera esta ejecutando este query sqlr= "SELECT Articulo FROM FacturaP WHERE Bandera='0'" sqlr= "SELECT Articulo FROM FacturaP WHERE Bandera=0"
__________________ "El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera." -- Ernest Hemingway |
| |||
reinicie mi maquina y volvi a correr el codigo y ahora me sale Microsoft OLE DB Provider for ODBC Drivers (0x80040E31) [Microsoft][ODBC SQL Server Driver]Terminó el tiempo de espera En la linea 13 |
| ||||
MOdificaste la sentencia SQL? A ver, ve al analizador de consultas y pega esa consulta, ejecutala y veamos si te devuelve registros.
__________________ "El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera." -- Ernest Hemingway |
| |||
ok, ya lo hice y me marca error de tiempo de espera Bandera es un campo que utilizo para que solo eliga los campos que acabo de subir y no agarre los anteriores, pero cuando hago una consulta en el sql analyzer, Select Articulo From FacturaP, esto me despliega 1300 registros, y si le pongo Select Articulo From FacturaP Where Bandera = 0, se dilata y no despliega nada, por el momento en esta tabla solo tengo los campos del proceso actual. Que es lo que sucede? |
| ||||
Perdon por el post tan rapido, dices que si haces tu consulta desde el analyzer y le pones la condicion WHERE bandera = 0 se queda pegado aun en el analyzer??
__________________ "El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera." -- Ernest Hemingway |
| ||||
cambialo a bit, default (0), obviamente no acepta nulos, cambia tu sentencia por SET NOCOUNT ON;SELECT campo FROM tabla WHERE bandera = 0 Correlo desde el analyzer y veamos si asi si te arroja resultados.
__________________ "El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera." -- Ernest Hemingway |