Cómo fijar una una fila en una fórmula según condicional




En Z3:Z debo ingresar una fórmula que hace una resta, fijando la fila de una de las referencias de la fórmula según condicional ubicado en S3:S.

Aunque sé que no funciona de esta manera, debería ser algo así: SI(S3="Alta";Q3-Q$3;Q3-Q3). Os dejo el Ejemplo:

![](//blob.todoexpertos.com/uploads/md/ad401ab482ad0412eaa3582a181fdec6.jpg)
Intenta, en Z3:


```
=Q3-INDICE($Q$1:$Q$15;MAX(SI($S$3:S3="Alta";FILA($S$3:S3))))
```
y extiéndela hacia abajo hasta donde haga falta.

A tener en cuenta:

 - Se trata de una fórmula matricial, por lo que ha de ser introducida pulsando mayúsculas control entrada al mismo tiempo
amigos les comparto la solución:

si alguien conoce que valores se le puede poner al campo i\_sgfunct por que con la “c” te muestra el paso a paso del proceso.

observen:

[[image]](https://foros.consultoria-sap.com/uploads/db7262/original/3x/c/5/c5599222f216c73cbaa60eba0c4ce2d109725223.png "image")
[[image]](https://foros.consultoria-sap.com/uploads/db7262/original/3x/f/0/f068ab9b0e27a375b953093037dd8a7bd1072a30.png "image")
[[image]](https://foros.consultoria-sap.com/uploads/db7262/original/3x/d/4/d448f934275234f3c7f8757fb1d4963123777dc9.png "image")

paso 1:

[[image]](https://foros.consultoria-sap.com/uploads/db7262/original/3x/9/b/9bcdcb9a236d604a71fd0e56bc2ca844d5fc8f4b.png "image")

paso 2:

[[image]](https://foros.consultoria-sap.com/uploads/db7262/original/3x/e/8/e859f68266fadd858aca3fef5ad15782fd65df02.png "image")

paso 3:

[[image]](https://foros.consultoria-sap.com/uploads/db7262/original/3x/c/f/cf4eaa2b483c117668b07c17e8e93c6d503ef805.png "image")

paso 4:

[[image]](https://foros.consultoria-sap.com/uploads/db7262/original/3x/0/f/0f52f083bd907828651e6fe3c760eb3e7c6fb977.png "image")

paso 5:

[[image]](https://foros.consultoria-sap.com/uploads/db7262/original/3x/0/7/07422411c986279788cc7ce415eb5e8f266280b3.png "image")

paso… Aquí está la solución. Puede utilizar el siguiente código: 


```
context.Table.Where(x => x.Field1 > 0).Update(y => new Table { Field2 = y.Field2 + 1 });

```
  Espero que ayude. Los ejemplos que otros han dado no funcionarán en Entity Framework hoy, porque no se pueden combinar enumeración de clientes y servidores en las entidades LINQ 2. 

 En su lugar, necesita construir una expresión OR, manualmente. 

 Ejecuto una serie de [consejos](http://blogs.msdn.com/alexj/archive/2009/03/26/index-of-tips.aspx) de [EF](http://blogs.msdn.com/alexj/archive/2009/03/26/index-of-tips.aspx) y [este consejo](http://blogs.msdn.com/alexj/archive/2009/03/26/tip-8-writing-where-in-style-queries-using-linq-to-entities.aspx) te muestra cómo construir una expresión OR. 

 Espero que esto ayude 

 Alex Básicamente hay varias cosas que puedes hacer. 

* usando `SqlBulkCopy.WriteToServer` que no funciona muy bien junto con EF, sin embargo, existen varios intentos para crear extensiones
* utilizando un procedimiento almacenado que tomará un registro grande y lo dividirá de acuerdo con alguna lógica
* utilizando parámetros de procedimiento almacenado escritos en la tabla y realice una llamada al procedimiento almacenado (y varias `insert ... select` dentro del procedimiento almacenado)

 En general, prefiero la tercera opción. 

 Marque esta pregunta [Entity Framework Stored Procedure Tabla Valor Parámetro](https://stackoverflow.com/questions/8157345/entity-framework-stored-procedure-table-value-parameter) no cursor, mientras lazo, o por el usuario función necesaria.sólo necesito ser creativo con for xml y trayectoria.[nota: esta solución sólo funciona en sql 2005 y posteriores. pregunta original no ha especificado la versión en uso.]create table #yourtable ([id] int, [name] char(1), [value] int) insert into #yourtable ([id],[name],[value]) values (1,'a',4) insert into #yourtable ([id],[name],[value]) values (1,'b',8) insert into #yourtable ([id],[name],[value]) values (2,'c',9) select [id], stuff(( select ', ' + [name] + ':' + cast([value] as varchar(max)) from #yourtable where (id = results.id) for xml path(''),type).value('(./text())[1]','varchar(max)') ,1,2,'') as namevalues from #yourtable results group by id drop table #yourtable intuyo que quieres desarrollar un simulador con algun lenguaje de programación, ¿es correcto?

si es así, deberás saber que existen dos tipos de notaciones para los movimientos de las piezas:

1. notación descriptiva, se presta a confusiones pues cada jugador numera sus filas del 1 al 8 desde su lado y cada vez más en desuso, por lo que solo la mencionamos y

2. notación algebraica

cada una de las sesenta y cuatro casillas de un tablero de ajedrez es identificada con dos caracteres de manera única. el primer carácter identifica la columna de la casilla, y se representa por una de las siguientes letras minúsculas a, b, c, d, e, f, g y h, ordenadas desde la izquierda del jugador con piezas blancas hasta su derecha. el segundo carácter de una casilla indentifica su línea (fila) y se representa por un número del 1 al 8, en orden ascendente, desde el lado del jugador de piezas blancas hasta el lado jugador de piezas negras. las casillas, en la posición inicial, de algunas piezas son: torre del lado de la dama blanca a1, dama blanca d1, torre del lado del rey negro h8.

cada pieza tiene una letra mayúscula asociada, y varía en función del idioma del anotador, en español se utilizan r, d, t, a y c, respectivamente, para el rey, la dama, la torre, el alfil y el caballo. los peones no tienen asociados ninguna letra.

así 1. e2-e4 denotará que el peón que se encuentra en la casilla e2 ha sido movido a e4, habitualmente se omite la casilla de partida y se infiere por la casilla de llegada. nc3 será el caballo a la posición c3.

en fin, todo esto lo puedes hallar en cualquier libro elemental de ajedrez, o en línea en:

 http://es.wikipedia.org/wiki/notaci%c3%b3n\_algebraica\_(ajedrez)

lo interesante será "enseñar" a tu modelo de simulación las reglas del juego y como reconocer una jugada válida.

podré darte más ayuda si especificas mejor tu pregunta.
yo simule hace mas de 30 años un programita parecido, usando fortran iv y lo hice con un arreglo bidimensional de 8 x 8, todo lo que pude avanzar fue que el programita revisara la validez de la movida propuesta y dar respuestas correcto o incorrecto, pues en ese entonces la máxima interactividad que había con la computadora era a través de tarjetas perforadas!

toda una brecha generacional no??!!!

ahora me divierto muchísimo jugando en línea contra rivales, humanos o máquinas y la verdad es que la oferta de programas interesantes sobrepasa el tiempo que se le puede dedicar.

ojala, sea lo que requieres.
saludos, *Nota: la respuesta se proporcionó en un comentario en la pregunta original. Solo le estoy agregando un poco aquí, para hacerlo más visible y claro.* 





 Entity Framework obviamente asigna clases de C # a tablas de bases de datos a través de propiedades que representan las distintas columnas en cada tabla. Ahora, si el tipo de datos de una de estas propiedades no es compatible con el tipo de datos de su columna correspondiente en la base de datos, obtendrá una `System.InvalidCastException` cuando intente recuperar algo de esa tabla, incluso si la propiedad no coincide no está directamente involucrada en la búsqueda 

 En la pregunta, la consulta fue: 


```
User user = context.Users.First(i => i.UserId == id);

```
  No importa que tanto `id` como su propiedad correspondiente `UserId` sean válidas y compatibles entre sí aquí, porque lo que se está buscando es una instancia de toda la clase de `User` . 

 Aparentemente, el tipo de alguna otra propiedad en el `User` es incompatible con el tipo una columna con el mismo nombre en la tabla de `user` en la base de datos, por lo que el intento de mapearlo arroja la excepción anterior. básicamente, se crea una función de interfaz:public interface func { public out apply(in in); } y, a continuación, pasar una subclase anónima a través de su método.su método se podría aplicar la función a cada elemento en el lugar:public static void applytolistinplace(list list, func f) { listiterator itr = list.listiterator(); while (itr.hasnext()) { t output = f.apply(itr.next()); itr.set(output); } } // ... list mylist = ...; applytolistinplace(mylist, new func() { public string apply(string in) { return in.tolowercase(); } }); o crear un nuevo list (básicamente la creación de una asignación de la lista de entrada a la de salida de la lista):public static list map(list in, func f) { list out = new arraylist(in.size()); for (in inobj : in) { out.add(f.apply(inobj)); } return out; } // ... list mylist = ...; list lowercased = map(mylist, new func() { public string apply(string in) { return in.tolowercase(); } }); que uno es preferible depende de su caso de uso. si la lista es muy grande, en lugar de la solución puede ser la única solución viable; si usted desea aplicar a muchas funciones diferentes a la misma lista original para hacer muchas otras listas, usted va a querer la map versión. hola compañera. 
felicidades por el esfuerzo. 
sobre tu consulta, podríamos mejorarla especificando el join que por default nos da el sistema, enlazando el encabezado y detalle del mismo documento: 
[imagen] 
por lo tanto, quedaría dela siguiente manera: 

select t0.docentry, t0.docnum, ‘los campos … a la fuerza ni los zapatos. si ella no quiere es porque no esta lista para dar un paso de esos y si ese es tu fin, el de comprometerte si o si, pues lo mejor es que la dejes tranquila. o esperar que ella este lista y llenarte de mucha paciencia (todo por amor) . pero no trates de convencerla, porque eso es discurso de vendedor barato. cuando hay amor no se necesitan argumentos para venderte a los demás de que tan bueno eres o serás como esposo. asi que si ella no quiere, como coños vas a seguir con ella?,(perdida de tiempo total). y bueno si la quieres dejar pues estas en tu derecho pero igual no te apresures, estas muy joven. igual mi respuesta es hipotética igual si eres tu o no el del caso.