No funciona el Insert Into Values

Estoy programando en Foxpro con BD en SQL, estoy agregando un registro a una tabla con el Insert Into Values, no me da error pero no me ingresa el registro en la tabla, quizás estoy haciendo algo mal, yo en ese Insert Into Values agrego valores que están en cajas de texto, en cursores y en variables.
¿Qué estaré haciendo mal?
Insert Into COMISION Values (" +;
"'" + (puntero.CantReg) + "', " +;
"'" + ALLTRIM(thisform.combo1.value) + "', " +;
"'" + alltrim(vdocum_selec.tipo) + "', " +;
"'" + ALLTRIM(vdocum_selec.numero) + "', " +;
"'" + alltrim(vdocum_selec.monto) + "', " +;
"'" + ALLTRIM(vdocum_selec.saldo) + "', " +;
"'" + ALLTRIM(ThisForm.text1.Value) + "', " +;
"'" + ALLTRIM(usuario_actual) + "', " +;
"'" + "true" + "')

1 Respuesta

Respuesta
1
Pues a lo que veo, me parece que estás mandando todos los valores con comillas (''), lo cual le indicaría al SQL que que se manden puras cadenas pero, según veo el nombre de los campos, tal vez no todos los campos sean cadenas, por ejemplo "numero", "monto", "saldo", supongo que son valores numéricos en la tabla, ¿o no? Si es así, no deberías concatenar la comilla simple antes ni después del valor.
Ahora bien, para saber más concretamente cuál es el error que está regresando el servidor de SQL, puedes ejecutar la función "MESSAGE()" inmediatamente después de mandar el comando a SQL, la cual te regresa el último error ocurrido en Visual FoxPro.
cComSQL = "INSERT INTO Comision VALUES (..."
nEjeCom = SQLEXEC(nIdCon, cComSQL, "")
IF nEjeCom < 0
cError = MESSAGE()
MESSAGEBOX(cError, 16)
Endif
Otra alternativa para ver el error con algunos datos adicionales es usar la función &quot;AERROR()&quot;, la cual crea o llena un arreglo con datos del error.
Use la función y me indica este error: El valor, tipo o número del argumento de la función no es válido.
El código lo tengo de la siguiente manera:
Sq_insert=&quot;insert into comision values (&quot;+puntero.CantReg+&quot;, &#39;&quot;+thisform.combo1.Value+&quot;&#39;, &#39;&quot;+vdocum_selec.tipo+&quot;&#39;, &quot;+vdocum_selec.numero+&quot;, &quot;+vdocum_selec.monto+&quot;, &quot;+vdocum_selec.saldo+&quot;, &#39;&quot;+ThisForm.text1.Value+&quot;&#39;, &#39;&quot;+usuario_actual+&quot;&#39;, &#39;&quot;+0+&quot;&#39;)&quot;
tresult = SQLExec(tconnect,Sq_insert)
Entonces tresult es mayor a cero, peroooooooooooooo no guarda y me indica el error que le comente anteriormente
¿En qué línea te marca el error, en qué comando? ¿Usaste el &quot;MESSAGE()&quot; o el &quot;AERROR()&quot;? Si usaste el segundo, debes indicarle una variable como argumento para que funcione y lo que hace es generar un arreglo con detalles del último error ocurrido.
AERROR(aUltError)
Ejecuta el código otra vez y dime:
- El valor que tiene &quot;tresult&quot; al final.
- El mensaje que muestra la función &quot;MESSAGE()&quot;

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas