none
consulta Sql muy larga RRS feed

  • Pregunta

  • Tengo 2 datagridview que se cargan con una consulta.
    Paso los datos de un datagridview al otro pinchando sobre el registro que quiero y asu vez lo quito del datagrid para no repetir registros.
    Por ejemplo
    En el primer datagridview lo lleno con la consulta
    Dim Sql As String = "SELECT Id, nombre, apellido, Año FROM datos where Id <>0"
    Despues para ir quitando los que voy pasando al otro datagid hago esto
    Sql = Sql & " " & "and " & "Id <> " & filtro
    Asi me funciona pero el problema es cuando son muchos registros ya que me sale el error de que la secuencia sql es muy larga.
    Algo asi
    Sql  = "SELECT Id, nombre, apellido, Año FROM datos where Id <>0 and Id <>2 and Id <>35 and....."
    ¿Alguna idea para corregirlo?
    • Cambiado Enrique M. Montejo sábado, 21 de mayo de 2011 10:09 acceso a datos (De:Lenguaje VB.NET)
    martes, 14 de abril de 2009 18:13

Todas las respuestas

  • prueba haciendo el concatenado con "not in" en vez de preguntar "distinto de" para cada dato.
    En vez de 

     where Id <>0 and Id <>2 and Id <>35 and.....

    te quedaria 

     where Id not in(0,2,35,..)

    Creo que ahorrarias mucho espacio. Otra cosa, tienes demasiados registros cuando te sale el error?, no conozco limitacion alguna para la longitud de una consulta sql, al menos no desde el sql directamente.

    martes, 14 de abril de 2009 19:04
  • Al rededor de los 100 me sale el error. Pensaba que podia ser por ser el sql un string
    Probaré lo que me dices.
    martes, 14 de abril de 2009 19:39