Meter datos en grid desde BD en sql

Hola buenos tardes, no puedo meter los datos de una base de datos en sql mediante un combobox.
En el combobox selecciono un nombre de vendedor y en el grid necesito que es eponga una serie de datos de ese vendedor y no lo hace. Te pongo el código para que veas lo que hago
*este es el codigo que esta en el clik del combobox
buscaid=0
lex_=""
    lex_=ALLTRIM(thisform.COMBO1.value)
    SQLEXEC(conexion,"select * from vendedor where (nombre like '%"+lex_+"%')")
                        id_=clave
                        _nom=nombre        
        IF not empty(id_) then
            thisform.grid1.SetFocus
            buscaid=id_
            ca="CANCELADA"
            _verdad="T"
             rnum=0
                SQLEXEC(conexion,"select COUNT(factura) As nclav FROM tfacturas where vendedor=?buscaid")
                        rnum=nclav
            activado="T"
            _verdad="T"
                SQLEXEC(conexion,"select * from tfacturas where vendedor=?buscaid order by referencia")
                SELECT sqlresult
        ELSE
            thisform.combo1.SetFocus
        ENDIF
Espero me puedan ayudar. Gracias este es mi correo [email protected]

1 Respuesta

Respuesta
1
En un principio para verificar, ¿la grilla tiene asignado el cursor en el recordsource y en las columnas cada campo? Utiliza el método thisform. Grid1. Refresh() luego de ejecutar la consulta. Además siempre te aconsejo que utilices el método interactivechange() en lugar del click en el combo, es mucho más efectivo.
Probá con esas 3 cositas que le hacemos un seguimiento si no funciona porque la consulta está bien por lo que veo.
Muchas gracias, el error era en el cursor en el recorsource. Muchísimas gracias por tus comentarios.
Pero ahora tengo el siguiente problema.
TENGO UNA TABLA EN SQL QUE SE LLAMA FACTURAS, Y TIENE LOS CAMPOS DE
factura, vendedor, cliente, fecha, cantidad, articulo, pu, referencia ya llena de información, y necesito que los datos se me pasen a una tabla local den visual foxpro que se llama TFACURAS.
Y lo que estoy haciendo es lo siguiente:
i=""
ii=""
iii=""
iv=""
v=""
vi=""
vii=""
viii=""
viii=0
iv_="00/00/00"
conexion=SQLCONNECT("compupro","root")    
    SQLEXEC(conexión,"select FACTURA, VENDEDOR, CLIENTE, FECHA, CANTIDAD, ARTICULO, PU, REFERENCIA from FACTURAS")
            GO TOP    
            SCAN
                i=INT(VAL(FACTURA))
                   ii=INT(VAL(VENDEDOR))
                iii=INT(VAL(CLIENTE))
                IF EMPTY(fecha)then
                    iv=iv_
                ELSE
                    iv=fecha
                ENDIF
                *iv=fecha
                v=INT(VAL(cantidad))
                vi=articulo
                vii=INT(VAL(pu))
                viii=referencia
*aqui es dnde le digoq ue los ponga en mi tabla local llamda tfacturas pero no lo hace lo intente de dos formas
                INSERT INTO TFACTURAS(FACTURA,VENDEDOR,CLIENTE,FECHA,CANTIDAD,ARTICULO,PU,REFERENCIA);
                VALUE(?i,?ii,?iii,?iv,?v,?vi,?vii,?viii)")
                *INSERT INTO TFACTURAS(FACTURA,VENDEDOR,CLIENTE,CANTIDAD,ARTICULO,PU,REFERENCIA);
                VALUES(i,ii,iii,v,vi,vii,viii)
            ENDSCAN    
*en esta parte solo quice ver que si me estubiera trayendo los valores e la tabla sql
            thisform.text1.value=i
            thisform.text2.Value=ii
            thisform.text3.Value=iii
            thisform.text4.VALUE=iv
            thisform.text5.Value=v
            thisform.text6.VALUE=vi
            thisform.text7.Value=vii
            thisform.text8.value=viii    
espero me peudas ayudar y de nuevo muchas gracias.
El código de inserción parece estar bien, pero no veo que resuelvas la conexión antes de intentar grabar. Deberías probar de ejecutar el insert dentro de un SQLEXEC(conexión,"INSERT")
Primeramente muchas gracias por tus comentarios.
Pero ahora tengo el siguiente problema.
En la misma base de datos de sql tengo el campo FECHA de tipo DATE y en la misma bse de datos de visual (dbf) tengo un campo FECHA y tipo DATE y necesito jalar de sql y ponerla en la de dbf, pero no em deja, te comento que es lo que hago.
Jalo lsod atos de sql.
SQLEXEC(conexión,"select FACTURA, VENDEDOR, CLIENTE, FECHA, CANTIDAD, ARTICULO, PU, REFERENCIA from FACTURAS")
Los pongo en variables.
go top
            SCAN
                i=INT(VAL(FACTURA))
                   ii=INT(VAL(VENDEDOR))
                iii=INT(VAL(CLIENTE))
                IF EMPTY(fecha)then
                    iv=iv_
                ELSE
                    iv=fecha
                ENDIF

                v=INT(VAL(cantidad))
                vi=articulo
                vii=INT(VAL(pu))
                viii=referencia
Así es como asigno el campo FECHA ala variable IV.
Luego la quiero intentar en mi tabla dbf pero no em deja, lo he intentado de estas formas.
1.-
INSERT INTO TFACTURAS(FACTURA,VENDEDOR,CLIENTE,FECHA,CANTIDAD,ARTICULO,PU,REFERENCIA);
                VALUES(i,ii,iii,iv,v,vi,vii,viii)
2.-
insert into tfacturas (FECHA);VALUES(?)
3.-
insert into tfacturas (FECHA);VALUES(?iv)
4.-
insert into tfacturas (FECHA);VALUES(iv)
5.-
insert into tfacturas (FECHA);VALUES(08/06/2010)
6.-
insert into tfacturas (FECHA);VALUES('08/06/2010')
7.-
insert into tfacturas (FECHA);VALUES("08/06/2010")
Nota: en los puntos 5,6,7 he intentado cambiando el ordend e la fecha y tampoco he tenido resultados.
Espero me puedas ayudar.
Para insertarla a mano tendrías que hacer así:
insert into tfacturas (FECHA) VALUES (ctod('08/06/2010'))
También puedes usarlo sobre la variable ctod(IV)
Recuerda que siempre es bueno que setees el formato que utilizas.
SET DATE FRENCH
SET CENT ON
Muchísimas gracias, ya hemos avanzado bastante con tu ayuda, pero aun así sigo con problemas jajaj, te comento lo siguiente:
Tenemos problemas todavía al querer ingresar la fecha, lo que nos sucede es que nos maca error al querer agregar la fecha en la misma instrucción de intentar:
"funtion argumet value, type, or count is invalid"
al querer ingresarla de la siguiente forma:
SET DATE TO AMERICAN
SET CENT ON
INSERT INTO tfacturas(FACTURA,VENDEDOR,CLIENTE,FECHA,CANTIDAD,ARTICULO,PU,REFERENCIA);
                VALUES(i,ii,iii,(CTOD(iv)),v,vi,vii,viii)
tambien lo intente asi:
INSERT INTO tfacturas(FACTURA,VENDEDOR,CLIENTE,FECHA,CANTIDAD,ARTICULO,PU,REFERENCIA);
                VALUES(i,ii,iii,CTOD(iv),v,vi,vii,viii)
otras formas fueron:
INSERT INTO tfacturas(FECHA)values CTOD(iv)    //marcando error de sintaxis
insert into tfacturas(FECHA)VALUES (ctod(iv))     //marcando el error de la primera opcion
la unica forma que pudimos ingresra la fecha fue manual.
insert into tfacturas (FECHA) VALUES (ctod('08/06/2010'))
Pero no hemos podido insertarla desde una variable, espero me puedas ayudar porque ya estamos desesperados, de antemano muchas gracias.
El primer insert es correcto si no funciona desde la variable es porque el tipo de datos no corresponde. Para utilizar la función CTOD() "significa Caracter TO Date" tienes que asegurarte que la variable IV tenga una valor de tipo carácter con los separadores de fecha como guion o barra. EJ:
IV="10/06/2010"
o
IV = '10-06-2010'
si la fecha viene vacia el contenido de IV debería ser
IV = ""
Teniendo cualquier da estos valores en la variable no te va a dar error. Si IV es de cualquier otro tipo o no tiene correctamente separados, dd/mm/aaaa te va a dar error.
Trata de ver en el depurador cual es el contenido de IV cuando te da el error.
Buenas tardes, seguí tu consejo y en efecto en el depurador el valor que tiene la variable IV es la fecha pero me la pone entre llaves, de la siguiente forma
i='242436'
ii='15'
iii='345'
iv={30/06/2009}
Y es hay donde me marca el error que ya te mencione.
Ahora te explico de donde viene ese dato:
1.- Exporto un resumen de facturas de un sistema llamado SAE y lo guardo en un archivo .txt.
2.- Ese archivo lo cambio a exel, porque el sistema no me deja mandarlo a exel directamente.
3.- Usando el programa navicap exporto el archivo de exel a sql. Donde asigno un campo tipo date con el formato dia/mes/año
4.- Por ultimo ejecutamos la lineas de código que ya te he mostrado, donde me conecto y selecciono los datos de esa tabla sql, los escaneo y los voy guardando en una variable, para después insertarlos en una tabla local .dbf donde ya tengo un campo tipo date.
Y me sigue arrojando el mismo error, por que la fecha viene entre llaves, mi pregunta es como quitarlas o porque las pone, o como le hago para que al momento de jalarlas no las ponga.
Te comento que ya hice una tabla en el navicap sin exportala desde exel y me sigue jalando la fecha con llaves.
Que más puedo hacer.
Te dejo mi msn por si quieres contactarme por esa vía.
[email protected]
Si tiene las llaves quiere decir que el tipo de datos es "Fecha", en ese caso no tienes que utilizar el CTOD(IV). Sino que directamente haces el insert con la variable IV, pero tienes que asegurarte que el tipo de datos de IV sea siempre el mismo porque si por alguna razón IV cambia el tipo de datos te va a dar error en el insert.
Muchísimos gracias por la ayuda, es muy buena idea contar con gente que se de el tiempo de ayudar ala comunidad que deseamos aprender y buscar nuevas tecnologías.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas