PDA

Ver la Versión Completa : conexion insertar,borrar, actualizar tablas .bdf


thelibmx
30-05-2008, 17:29:12
Hola amigos de nuevo aqui con un pequeño problemilla, no he manejado delphi con tablas bdf, pensando un poco, lo que logre hacer fue crear una conexion con el odbc y el driver de visual foxpro ya que las tabla se generaron ahi, despues en delphi agregue un tdatabase,ttable y un tdatasource,tdbnavigator,tdbgrid y varios Tdbedit, con eso ya pude ver la informacion que contiene la tabla, mi problema entre otros son varias cosas,

1.-me aparece la ventana de databaselogin al iniciar el programa, cuando la propiedad del tdatabase loginprompt esta en false, no se que otra cosa tenga que configurar.
2.-Con la barra dbnavigator puedo pasar de un registro a otro con las flechas e incluso me permite agregar otro registro, pero si quiero borrar alguno o quiero escribir en un registro que ya existe es decir actualizar un dato de algun campo me manda el siguiente error


Project Project.exe raised exception class EDBEnginerError with message 'Key violation. [Microsoft][ODBC Visual foxpro driver]SQL:statement too long.'


No estoy insertando informacion duplicada, eso me aparece cuando intento modificar en el dbgrid informacion o cuando quiero borrar algun registro.
Como les dije no he trabajado con ese tipo de tablas, tal ves no es la forma como debi hacer la conexion o me falto algun paso, les agradeceria si pudieran decirme cual seria la mejor forma de poder accesar a esos datos y poder insertar,modificar, y borrar la informacion.
utilizo delphi2006 y las tablas estan hechas en visualfoxpro 8

Por su ayuda muchas gracias

BlueSteel
30-05-2008, 20:19:59
Hola

Mira, con el Delphi 7, realizaba lo sgte;

- Crear el Alias (ruta donde estan ubicadas las tablas .dbf) en el DBE
- Conectar las tablas mediante los TTable o TQuery de la pestaña DBE
- Siempre utilice TQuery (para actualizar habia que cambiar la propiedad RequiesList a True... no me acuerdno muy bien como se escribia


Como todo lo usaba con TTable y TQuery.. los proceso para agregar, eliminar, actualizar eran los sgtes:

Eliminar

With Tablas Do
With TSoc Do
Begin
If MessageDlg('Seguro de Borrar al Socio '+#13+#13+FieldByName('Nombre').AsString,mtConfirmation, [mbYes,mbNo], 0)=MrYes Then
Delete;
End;


Agregar

With Tablas Do
With QSimples Do
Begin
If RecordCount = 1 Then
ShowMessage('Registro ya Existe ! No fue agregado!!!')
else
Begin
Insert;
FieldByName('Ficha').AsString := Fic.Text;
FieldByName('Nombre').AsString := Nom.Text;
FieldByName('Simple').AsString := Simple.Text;
FieldByName('Olimpico').AsString := Olimpico.Text;
FieldByName('Sorteo').AsString := Sorte;
FieldByName('Temporada').AsString := Tempo;
Post;
End
End;


Bueno, en el ejemplo anterior, antes de insertar verificaba con el sgte codigo

Fic.Text := Verificar.SFicha.Text;
Nom.Text := Verificar.Nombre.Text;
Tempo := Verificar.Temporada.Text;
Sorte := Verificar.Sorteo.Text;
Simple.SetFocus;
With Tablas Do
With QSimples Do
Begin
Sql.Clear;
Sql.Add('Select * From Simples Where (Ficha=:Var1) And (Sorteo=:Var2) And (Temporada=:Var3)');
Params[0].AsString := Fic.Text;
Params[1].AsString := Sorte;
Params[2].AsString := Tempo;
ExecSql;
Active:=True;
End



Bueno, recordando no tengo ningun proceso de actualización...

Las tablas eran creadas con el DBE, tipo DBase III o Paradox

Salu2:p:D

thelibmx
02-06-2008, 18:41:07
Muchas gracias por tu respuesta BlueSteel.

Utilize un componente que se llama tdbf y se soluciono mi problema dejo el link por si alguien mas le sirve.

http://sourceforge.net/projects/tdbf/

Saludos :D

MasDelphi
30-01-2014, 12:33:53
Gracias thelibmx!!.
Ayer tuve que trabajar con un código muy antiguo y se me presentó el mismo problema que indicas. También conseguí solucionarlo con componente de tdbf en Delphi 5. Varias horas en ello y un dolor de cabeza, hasta que seguí tu consejo y logré la solución.

Nuevamente, gracias a todos!.

thelibmx
10-02-2014, 20:03:14
No es nada, Saludos