on 04-04-2014 4:11 AM
Hola a todos, tal vez lo que pregunte es algo tonto pero he buscado información y no he encontrado, espero me ayuden.
Tengo una tabla con los siguientes campos:
ide, Campo1, Campo2,.... ,CampoN
El punto es que necesito recorrer los campos con un ciclo para ello, necesito en vez del numero que aparece en el campo poner la variable del ciclo
ejemplo: Sin Ciclo
{vwTabla.Campo1}:= "Informacion"
{vwTabla.Campo2}:= "Informacion"
{vwTabla.Campo3}:= "Informacion"
{vwTabla.Campo4}:= "Informacion"
.
.
{vwTabla.CampoN}:= "Informacion"
Con un ciclo
for i := 1 to N step 1 do
//Aca el problema
{vwTabla.Campo[i]}:= "Informacion";
Me genera un error, no se como se puede hacer o tendré que trabajar campo por campo.???
Saludos y Gracias de Antemano
Hola, donde lo estas trabajando?
TN, Busqueda formateada, Programacion.
Cada una tiene una solucion.
Debes convertir la instruccion a un string. Y luego ejecutarla para que puedas llamarlo asi.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Bien, Alejandro ni modo.
Son campos fijos. Te explico un poco. como dije arriba una tabla con N campos pero fueron llamados de la siguiente forma Campo1, campo2, campo3, campo4, campo5.........Campo25 por dar un ejemplo, mi objetivo es mas de optimizacion de codigo por que yo puedo acceder a cada uno de ellos por el nombre, he aqui el uso del ciclo y meter el campo con la variable del ciclo me sirviera para trabajar el indice del campo. y en vez de trabajar x lineas de codigo solo unas cuantas con el ciclo..
Gracias, muy Agradecido
Un ejemplo sería asi.
Create table #Temporal (Campo1 int, Campo2 int, Campo3 int, Campo4 int)
Insert #Temporal Values(1,2,3,4)
Declare @SQL nvarchar(500)
Declare @ParmDefinition nvarchar(500)
Declare @I as int
Declare @Resultado int
Declare @ResultadoFinal int
Set @I = 1
Set @SQL = ''
Set @Resultado = 0
Set @ResultadoFinal = 0
While @I < 5
Begin
Set @SQL = 'Select @ResultadoOUT = Campo' + convert(varchar,@I) + ' From #temporal'
SET @ParmDefinition = N'@ResultadoOUT varchar(5) OUTPUT'
EXECUTE sp_executesql @SQL, @ParmDefinition, @ResultadoOUT=@Resultado OUTPUT
Set @ResultadoFinal = @ResultadoFinal + @Resultado
Set @I = @I + 1
End
Select @ResultadoFinal
Drop table #Temporal
este Ejemplo Devuelve el valor contenido en esos campos.
O armar el query por codigo. De esta manera
Create table #Temporal (Campo1 int, Campo2 int, Campo3 int, Campo4 int)
Insert #Temporal Values(1,2,3,4)
Declare @SQL nvarchar(500)
Declare @I as int
Declare @ParmDefinition nvarchar(500)
Declare @ResultadoFinal int
Set @I = 1
Set @SQL = 'Select @ResultadoOUT = '
Set @ResultadoFinal = 0
While @I < 5
Begin
Set @SQL = @SQL + ' Campo' + convert(varchar,@I) + case when @I < 4 then ' + ' else '' end Set @I = @I + 1
End
Set @SQL = @SQL + ' From #Temporal'
SET @ParmDefinition = N'@ResultadoOUT varchar(5) OUTPUT'
EXECUTE sp_executesql @SQL, @ParmDefinition, @ResultadoOUT=@ResultadoFinal OUTPUT
Select @ResultadoFinal
Drop table #Temporal
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.