FoxPro/Visual FoxPro - Ayuda con firebird URGENTE!!!! URGENTE!!!!

   
Vista:

Ayuda con firebird URGENTE!!!! URGENTE!!!!

Publicado por Rherrera (29 intervenciones) el 06/03/2009 14:10:48
Hola estimados necesito ayuda urgente, si me pudieran colaborar con información sobre como mantener mantener una tabla de firebird desde foxpro insertar,editar eliminar, cualquier ayuda te lo agradezco

explico mi codigo

1-me conecto a la bd

CONEXION_SP='Driver={Firebird/InterBase(r) driver};'+;
'Dbname=C:Archivos de programaFirebirdFirebird_2_1DatosEGP_BackOffice.FDB;'+;
'PWD=masterkey;UID=SYSDBA;'

Store SQLStringConnect(CONEXION_SP)TO FB_SP
IF FB_SP>0
Else
MessageBox('Error al conectar Backoffice POS San Pedro',16,sc)
xerror=xerror+1
EndIf

Text to consulta Noshow
Select idart,idtart,idfam,codbarra,descart from articulos order by descart
EndText

sqlexec(FB_SP,consulta,"articulos_pos")

**AQUI TENGO MIS DUDAS
CURSORSETPROP("Buffering",5,"articulos_pos")
CURSORSETPROP("Tables","articulos","articulos_pos")
CURSORSETPROP("KeyFieldList","idart")
CURSORSETPROP("UpdateNameList","idart EGP_BackOffice.articulos.idart,"+;
"idtart EGP_BackOffice.articulos.idtart,"+;
"idfam EGP_BackOffice.articulos.idfam,"+;
"codbarra EGP_BackOffice.articulos.codbarra,"+;
"descart EGP_BackOffice.articulos.descart")
CURSORSETPROP("UpdatableFieldList","idart,idtart,idfam,codbarra,descart")
CURSORSETPROP("SendUpdates",.T.)
**FIN AQUI TENGO MIS DUDAS

2-haciendo un insert

Begin transaction
Insert Into articulos_pos(idart,idtart,idfam,codbarra,descart);
values(Val(gestion.articulo),12,1,Left(gestion.barra,18),gestion.descripcion)
TableUpdate(.T.)
End transaction

No se si sera la mejor forma de trabajar por la que me estoy embarcando cualquier ayuda al respecto se lo agradesco.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda con firebird URGENTE!!!! URGENTE!!!!

Publicado por Plinio (7771 intervenciones) el 06/03/2009 20:32:18
Yo comenzaria con vistas remotas. Es el metodo mas practico para conectarse a servidores de bases de datos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con firebird URGENTE!!!! URGENTE!!!!

Publicado por Rherrera (29 intervenciones) el 06/03/2009 20:44:28
No puedo insertar registros en la tabla articulos de firebird,

CONEXION_SP='Driver={Firebird/InterBase(r) driver};'+;
'Dbname=C:Archivos de programaFirebirdFirebird_2_1DatosEGP_BackOffice.FDB;'+;
'PWD=masterkey;UID=SYSDBA;'

Store SQLStringConnect(CONEXION_SP)TO FB_SP
IF FB_SP=0
MessageBox('Error al conectar',16,sc)
EndIf

HE AQUI EL PROBLEMA

xidart =99999
xidtart =12
xidfam =1
xcodbarra ='123456789'
xdescart ='ZZZZZZZZZ'

sqlexec(FB_SP,'Insert Into articulos(idart,idtart,idfam,codbarra,descart) values (xidart,xidtart,xidfam,xcodbarra,xdescart)')

QUE ESTOY HACIENDO MAL O QUE ME FALTA PARA QUE FUNCIONE?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con firebird URGENTE!!!! URGENTE!!!!

Publicado por Edgar dvd (135 intervenciones) el 06/03/2009 21:04:25
te falto lo mas importante amigo

todas la variables que tu les pasas a sql con Sql PassT tienes que utilizar antes el ?
sqlexec(FB_SP,'Insert Into articulos(idart,idtart,idfam,codbarra,descart) values (?xidart,?xidtart,?xidfam,?xcodbarra,?xdescart)')

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con firebird URGENTE!!!! URGENTE!!!!

Publicado por richard antonio marriaga lasca (174 intervenciones) el 10/03/2009 00:50:56
utiliza

?m.varible

sqlexec(FB_SP,'Insert Into articulos(idart,idtart,idfam,codbarra,descart) values (?m.?m.xidart,?m.xidtart,?m.xidfam,?m.xcodbarra,?m.xdescart)')

= SQLCOMMIT(FB_SP)

de esta forma podras grabar el registro

pero es mejor si vas a utilizar muchas variables que coloques la intruccion sql entre comillas y despues ejecutes Sqlexec asi :

lcsql ="INSERT INTO afiliado(cuenta,cedula,nombre,idzona,"+;
"telefono,celular,observacion)"+;
"VALUES(?m.ced,?m.cc,?m.nom,?m.fec,?m.direcc,?m.dp,?m.ciu,?m.brr,?m.xs,?m.tel,?m.cel,?m.ob,"+;)"

lcrdo = SQLEXEC (gn1,lcsql)

de esta forma si un formulario tiene muchos campos los podras agregar sin ningun problema

espero te sirva

yo desarrollo aplicaciones con firebird 2 y Vfp9 sp1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con firebird URGENTE!!!! URGENTE!!!!

Publicado por norberto flores (1 intervención) el 06/04/2009 06:34:26
sqlexec(FB_SP,'Insert Into articulos(idart,idtart,idfam,codbarra,descart) values (xidart,xidtart,xidfam,xcodbarra,xdescart)')

debes poner ? en las variables
sqlexec(FB_SP,'Insert Into articulos(idart,idtart,idfam,codbarra,descart) values (?xidart,?xidtart,?xidfam,?xcodbarra,?xdescart)')
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con firebird URGENTE!!!! URGENTE!!!!

Publicado por Robert (2 intervenciones) el 19/08/2009 02:22:52
Tengo el mismo problema y aun no logro insertar el registro en la tabla de firebird, favor de decirme si ya lo lograste.
yo hago lo siguiente :

lnEmp = 1
lnNum = 70
lcNom = 'ALVARADO/GOMEZ,ROBERTO'

SQLEXEC(conexion,'insert into empleados(empleado_id,numero) value (?lnEmp,?lnNum)')
= SQLCOMMIT(conexion)

Al leer no tengo problemas solo al tratar de insertar un registro la conexion la hago mediante odbc.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con firebird URGENTE!!!! URGENTE!!!!

Publicado por rherrera (29 intervenciones) el 19/08/2009 07:05:46
inserta de esta forma

SQLEXEC(conexion,'insert into empleados(empleado_id,numero) value (?m.lnEmp,?m.lnNum)')
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con firebird URGENTE!!!! URGENTE!!!!

Publicado por Robert (2 intervenciones) el 23/08/2009 18:45:28
me fije que en las tablas de firebird hay campos que no deben de ir null por lo que cambie el ejemplo a una tabla con solo tres campos obligatorios y lo hice de la siguiente manera:

lnAlm = 741701 && Integer
lcNom = 'Almacen_Roberto' && Varchar
lcNab = 'A_Rab' && Varchar


cadena = "INSERT INTO ALMACENES(ALMACEN_ID,NOMBRE,NOMBRE_ABREV) "
cadena = cadena + "values (?m.lnAlm,?m.lcNom,?m.lcNab)"

SQLEXEC(conexion,cadena)
= SQLCOMMIT(conexion)

if SQLEXEC(conexion,cadena)>0
wait wind 'ok, grabado '
else
a=aerror(matriz)
messagebox(matriz(2),55,'Error')
endif

Y me manda el siguiente error, Error de conectividad:[ODBC FireBird Driver][Firebird] attempt to store duplicate value (visible to active transations) in unique index ALMACENES_AK1.

en la tabla original solo tengo tres registros con el numero_id con los siguientes datos 741698, 741699 y 741700 por lo que yo le indico 741701 en mi ejemplo, en la tabla original veo si el campo almacen_id es de consecutivo automatico pero me indica que no, espero me puedas ayudar ahora tengo otra duda y es la de como relacionar dos o mas tablas eje:

_consu = "SELECT pagosnomina.empleado_id, pagosnomina.dias_trab, Empleados.Empleado_id, Empleados.Numero, Empleados.Nombre_Completo;
FROM pagosnoina ;
INNER JOIN empleados ;
ON pagosnominas.Empleado_id = Empleados.Empleado_id;
ORDER BY empleados.numero"

SQLEXEC(conexion,'_consu',"reporte")

y esta otra:
if SQLEXEC(conexion,"SELECT pagos_nomina.empleado_id,"+;
"pagos_nomina.dias_trab,"+;
"Empleados.Empleado_id,"+;
"Empleados.Numero,"+;
"Empleados.Nombre_Completo "+;
"FROM pagos_nomina, Empleados"+;
"WHERE pagos_nomina.empleado_id = Empleados.Empleado_id","reporte")>0
wait wind 'ok, grabado '
else
a=aerror(matriz)
messagebox(matriz(2),55,'Error')
endif

y tambien me marca error, me puede dar tu correo para explicarte el proyecto que quiero realizar y si no es posible seguir ayudandome.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar