Вставить записи в .DBF из C # - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть веб-API в C #, который берет отправленные записи и сохраняет их в таблице .DBF, но по какой-то причине каждый раз, когда я сохраняю, мне приходится выполнять REINDEX из Visual Fox Pro, чтобы иметь возможность увидеть эту запись, я хотел бы, чтобы при вставке записи из C # мне не нужно делать REINDEX, проблема в том, что при сохранении, по какой-то причине новая запись не индексируется

        public const String CCVEND = "Driver={Driver do Microsoft dBase (*.dbf)};collatingsequence=ASCII;dbq=C:\\DATABASE;defaultdir=C:\\DATABASE;deleted=0;driverid=533;fil=dBase 5.0;filedsn=C:\\DATABASE\\cx.dsn;maxbuffersize=2048;maxscanrows=8;pagetimeout=5;safetransactions=0;statistics=0;threads=3;usercommitsync=Yes";


 [HttpPost]
    [Route("ccfacl")]
    public IHttpActionResult addBillD([FromBody] Factl model)
    {
        String result = "";



        String DOCUMENTO = model.DOCUMENTO;

        DateTime FECHA = model.FECHA;
        String ARTICULO = model.ARTICULO;
        Double CANTIDAD = Convert.ToDouble(model.CANTIDAD);
        Double EMPAQUE = Convert.ToDouble(model.EMPAQUE);
        Double PRECIO_UNT = model.PRECIO_UNT;
        String CUENTAD = model.CUENTAD;
        String CUENTAC = model.CUENTAC;
        String LINEA_NUM = model.LINEA_NUM;
        String TIPO_MOVI = model.TIPO_MOVI;
        String CREACION = model.CREACION;
        String HORA = model.HORA;
        String USUARIO = model.USUARIO;
        String APROBADOP = model.APROBADOP;
        String APROBADO = model.APROBADO;
        String COMIS = model.COMIS;
        String CLAVEPPT = model.CLAVEPPT;

        try
        {


            using (OdbcConnection openCon = new OdbcConnection(Cx.CCVEND))
            {
                openCon.Open();

                string saveStaff = "INSERT into ccfactl (DOCUMENTO, FECHA, ARTICULO, CANTIDAD, EMPAQUE," +
                    "PRECIO_UNT, CUENTAD, CUENTAC, LINEA_NUM, TIPO_MOVI, CREACION,  HORA, USUARIO, APROBADOP,  APROBADO, COMIS, CLAVEPPT) VALUES  " +


                    "(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )";

                using (OdbcCommand querySaveStaff = new OdbcCommand(saveStaff, openCon))
                {
                    querySaveStaff.Connection = openCon;
                    querySaveStaff.Parameters.AddWithValue("@DOCUMENTO", DOCUMENTO);


                    querySaveStaff.Parameters.AddWithValue("@FECHA", FECHA);
                    querySaveStaff.Parameters.AddWithValue("@ARTICULO", ARTICULO);
                    querySaveStaff.Parameters.AddWithValue("@CANTIDAD", CANTIDAD);
                    querySaveStaff.Parameters.AddWithValue("@EMPAQUE", EMPAQUE);

                    querySaveStaff.Parameters.AddWithValue("@PRECIO_UNT", PRECIO_UNT);
                    querySaveStaff.Parameters.AddWithValue("@CUENTAD", CUENTAD);
                    querySaveStaff.Parameters.AddWithValue("@CUENTAC", CUENTAC);
                    querySaveStaff.Parameters.AddWithValue("@LINEA_NUM", LINEA_NUM);
                    querySaveStaff.Parameters.AddWithValue("@TIPO_MOVI", TIPO_MOVI);

                    querySaveStaff.Parameters.AddWithValue("@CREACION", CREACION);
                    querySaveStaff.Parameters.AddWithValue("@HORA", HORA);
                    querySaveStaff.Parameters.AddWithValue("@USUARIO", USUARIO == null ? (object)DBNull.Value : (object)USUARIO);
                    querySaveStaff.Parameters.AddWithValue("@APROBADOP", APROBADOP == null ? (object)DBNull.Value : (object)APROBADOP);
                    querySaveStaff.Parameters.AddWithValue("@APROBADO", APROBADO == null ? (object)DBNull.Value : (object)APROBADO);
                    querySaveStaff.Parameters.AddWithValue("@COMIS", COMIS == null ? (object)DBNull.Value : (object)COMIS);
                    querySaveStaff.Parameters.AddWithValue("@CLAVEPPT", CLAVEPPT == null ? (object)DBNull.Value : (object)CLAVEPPT);
    /*                */
                    querySaveStaff.ExecuteNonQuery();

                    result = "10";
                }
                openCon.Close();


            }
        }
        catch (SqlException ex)
        {
            result = ex.ToString();
        }


        //do something with e-mail
        return Ok(result);


    }
...