none
PORQUE LA AUTONUMERACIÓN EN EL DATAGRIDVIEW ME SALE -1, -2 ETC

    Pregunta

  • Buen dia una duda porque en el datagridview me sale -1 cuando agrego un nuevo dato, el datagridview esta enlazado con acces.mdb aqui les dejo la siguiente imagenes del error..

    de antemano muchas gracias y un cordial saludo :)


    martes, 21 de febrero de 2017 23:21

Respuestas

  • Probablemente es porque el campo id es autogenerado en la base de datos (por ejemplo un Autonumérico en Access). El que sabe cuál es el siguiente valor para incrementarlo y proporcionar el valor es Access, pero el Grid no "sabe" cuál es ese próximo valor. Entonces te indica un número negativo para advertir que ese valor no es "verdadero", sino que lo generará de forma automática la base de datos cuando realices la grabación.
    miércoles, 22 de febrero de 2017 7:46
  • [...] como puedo evitar eso y que el datagridview sepa el próximo valor 

    No puedes. El valor NO EXISTE hasta que grabas en la base de datos, y en ese momento se genera el valor. Piensa que mientras tanto otros usuarios podrían estar grabando a la vez en la base de datos, con lo que el autonumérico estaría creciendo, así que el programa cliente no puede saber cuál será el valor mientras no realice la grabación y justo en ese momento se "atrape" el siguiente valor autonumérico.

    Lo que sí puedes hacer es que justo después de grabar vuelves a leer lo que has grabado y lo presentas en pantalla. En ese momento sí que te saldrían los valores reales que se grabaron. Y mientras tanto, cuando estás tecleando los valores, lo que puedes hacer es dejar oculta la columna del grid, ya que al fin y al cabo está mostrando valores ficticios que no existen todavía, así que para eso es mejor que no la muestres.

    Si verdaderamente necesitas que los autonuméricos se presenten mientras estás introduciendo información, entonces prescinde del campo autonumérico en la base de datos; cámbialo por un entero que no sea automático, y genérale los valores por programación desde el lado cliente. Pero si lo haces así, tendrás que pensar en qué es lo que quieres que ocurra si alguna vez ejecutas la aplicación en "multiusuario": ¿Cómo se decide qué valor se le presenta a cada uno para que no se solapen?

    miércoles, 22 de febrero de 2017 18:42

Todas las respuestas

  • Probablemente es porque el campo id es autogenerado en la base de datos (por ejemplo un Autonumérico en Access). El que sabe cuál es el siguiente valor para incrementarlo y proporcionar el valor es Access, pero el Grid no "sabe" cuál es ese próximo valor. Entonces te indica un número negativo para advertir que ese valor no es "verdadero", sino que lo generará de forma automática la base de datos cuando realices la grabación.
    miércoles, 22 de febrero de 2017 7:46
  • gracias por contestar Alberto Poblacion

    gracias por la explicación pero como puedo evitar eso y que el datagridview sepa el próximo valor 

    miércoles, 22 de febrero de 2017 17:19
  • hola Joel C. Naupa Crispín

    ante todo muchas gracias por contestar la verdad es que no tengo codigo agregó la información manualmente y la base de datos la enlace en donde dice 

    Orígenes de Datos como lo muestra la siguiente imagen



    miércoles, 22 de febrero de 2017 17:26
  • [...] como puedo evitar eso y que el datagridview sepa el próximo valor 

    No puedes. El valor NO EXISTE hasta que grabas en la base de datos, y en ese momento se genera el valor. Piensa que mientras tanto otros usuarios podrían estar grabando a la vez en la base de datos, con lo que el autonumérico estaría creciendo, así que el programa cliente no puede saber cuál será el valor mientras no realice la grabación y justo en ese momento se "atrape" el siguiente valor autonumérico.

    Lo que sí puedes hacer es que justo después de grabar vuelves a leer lo que has grabado y lo presentas en pantalla. En ese momento sí que te saldrían los valores reales que se grabaron. Y mientras tanto, cuando estás tecleando los valores, lo que puedes hacer es dejar oculta la columna del grid, ya que al fin y al cabo está mostrando valores ficticios que no existen todavía, así que para eso es mejor que no la muestres.

    Si verdaderamente necesitas que los autonuméricos se presenten mientras estás introduciendo información, entonces prescinde del campo autonumérico en la base de datos; cámbialo por un entero que no sea automático, y genérale los valores por programación desde el lado cliente. Pero si lo haces así, tendrás que pensar en qué es lo que quieres que ocurra si alguna vez ejecutas la aplicación en "multiusuario": ¿Cómo se decide qué valor se le presenta a cada uno para que no se solapen?

    miércoles, 22 de febrero de 2017 18:42
  • gracias por tu tiempo mas que nada, me funciono las soluciones que me diste cualquier de las dos, ya sea carga de nuevo los datos o cambiar por un entero que no sea automático muchas gracias

    un grato saludo..

    miércoles, 22 de febrero de 2017 18:59