Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-08-2007
Avatar de b3nshi
b3nshi b3nshi is offline
Miembro
 
Registrado: feb 2005
Ubicación: Tucuman - Argentina
Posts: 164
Poder: 20
b3nshi Va por buen camino
Turbo Delphi y Firebird???

Hola a todos! Resulta q desde q salio Turbo Delphi para win32 solo utilizo esta version de delphi, en la version explorer.

Y bueno... mi problema esta en q ahora estoy intentando conectarme a una base de datos Firebird... ya que no cuenta con la paleta de componentes para interbase...

Buscando por internet entontre este tutorial... el cual me llevo a lograr una conexion... pero a decir verdad no tengo idea de como utilizarla... se q se estableció pero nada mas... y bueno... quisiera saber q componentes usar desde esta version de delphi para conectarme... considerando el hecho de que no puedo instalar componentes de terceros...

Aqui dejo la web q encontre: Conexion Turbo Delphi con Interbase (el sitio esta en ingles) y a decir verdad esta muy bien explicado... solo q al ser delphi .net en la version q utilizo no aparecen los componentes... por lo q me trabo al momento de utilizarlos... como puedo conectarme?

Desde ya les agradezco mucho si pueden ayudarme!

{Saludos}

Última edición por b3nshi fecha: 01-08-2007 a las 23:45:30.
Responder Con Cita
  #2  
Antiguo 02-08-2007
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Poder: 20
FGarcia Va por buen camino
Hace meses que no uso Firebird que ya se me esta olvidando lo poco que se.
Muy claramente dijiste que usas delphi for net. .NET usa nativamente ADO.NET para conectarse con BD's. Debes buscar en la pagina de Firebird algun componente que te permita desde delphi for net conectar a firebird. Ah! la instalacion de componentes de terceros creo que no se permite en los turbo personales solo en lo$ profe$ionale$
Responder Con Cita
  #3  
Antiguo 02-08-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Yo recuerdo que cuando comence a usar turbo delphi en su version explorer, use los componente DBExpress, usa TSQLConnection con el drivername Interbase, generas la cadena de conexión y ya puedes usar TSQLTable, TSQLQuery, TSQLDataSet, etc...

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #4  
Antiguo 02-08-2007
Avatar de b3nshi
b3nshi b3nshi is offline
Miembro
 
Registrado: feb 2005
Ubicación: Tucuman - Argentina
Posts: 164
Poder: 20
b3nshi Va por buen camino
Asi es... algo asi estoy intentando hacer... por las dudas aclaro q uso Turbo Delphi Explorer no .net... o sea... el tuto era de .net... si logro conectarme les cuento como me fue y creo q voy a postear como hacerlo porq mucha ayuda no se encuentra sobre el tema... de todos modos muchas gracias por sus respuestas... me sirvieron mucho!

{Saludos}
Responder Con Cita
  #5  
Antiguo 02-08-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por b3nshi Ver Mensaje
Asi es... algo asi estoy intentando hacer... por las dudas aclaro q uso Turbo Delphi Explorer no .net... o sea... el tuto era de .net... si logro conectarme les cuento como me fue y creo q voy a postear como hacerlo porq mucha ayuda no se encuentra sobre el tema... de todos modos muchas gracias por sus respuestas... me sirvieron mucho!

{Saludos}
Realmente es sencillo conectarse a firebird con DBExpress de Turbo Explorer para Win32.

Vamos a crear una seudo-manual haber como nos queda
  1. New project ---> VCL Forms Application
  2. Pega un TSQLConnection, un TSQLTable, un DSDataSource y un DBGrid en la forma
  3. En la propiedad ConnectionName del TSQLConnection asignas IBCONNECTION
  4. Click en la propiedad Params del TSQLConnection y en el parámetro DataBase asignas la base de datos que ya debes de haber creado
  5. En la propiedad SQLConnection del TSQLTable asigna el TSQLConnection
  6. Asigna la tabla que deseas al TSQLTable
  7. Ligas la TSQLTable al TDataSource
  8. Ligas el TDataSource al TDBGrid
Listo, abres la tabla y verás la información en el DBGrid.

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #6  
Antiguo 02-08-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama


Creo que hay un bug en el seudo-manual, si uso un dbgrid me manda un error de que no puede conectarse a un dataset unidireccional, ya lo probé con el TSQLDataSet y me da el mismo error, pero si uso TDBEdit´s si me muestra los datos.

Alguien que nos ayude a convertir este seudo-manual en un manual

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #7  
Antiguo 03-08-2007
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
Se vale un truco????

agregue un dasetprovider lo conecte al dataset, un clientdataset cree un datasource para este componente y se conecto perfectamente, sigo buscando soluciones a ver el porq de ese comportamiento
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #8  
Antiguo 03-08-2007
Avatar de b3nshi
b3nshi b3nshi is offline
Miembro
 
Registrado: feb 2005
Ubicación: Tucuman - Argentina
Posts: 164
Poder: 20
b3nshi Va por buen camino
Cita:
Creo que hay un bug en el seudo-manual, si uso un dbgrid me manda un error de que no puede conectarse a un dataset unidireccional, ya lo probé con el TSQLDataSet y me da el mismo error, pero si uso TDBEdit´s si me muestra los datos.
Bueno... el problema ahi es porq al sqltable no le estas asignando la propiedad mastersource con el datasource... y al datasource le estas asignando la propiedad dataset a la sqltable. Si no me equivoco cuando le asignes a los dos no te va a seguir apareciendo el problema...

Ahora mi problema esta en que logro "conectar" todos los componentes... pero cuando hago la asignacion al dbgrid este no me muestra los campos de la tabla q le asigné... alguien sabe porq?

Mientras sigo intentando... haber si logramos sacar de aqui un buen manual... y por cierto el seudo-manual esta bueno... digamo q es lo basico... ya vamos a ver si logramos hacerlo un manual...

{saludos}
Responder Con Cita
  #9  
Antiguo 03-08-2007
Avatar de b3nshi
b3nshi b3nshi is offline
Miembro
 
Registrado: feb 2005
Ubicación: Tucuman - Argentina
Posts: 164
Poder: 20
b3nshi Va por buen camino
A q nunca les paso esto jaja!! Se puso muy interesante esto... estaba viendo el porq no podia mostrar los campos en el dbgrid... y bueno... la cosa es q decidi cargarle yo manualmente los campos... pero lo mas interesante es q cuando le inserto una columna y le quiero asignar un campo por ejemplo... el campo nombre de mi tabla... Turbo Delphi se cierra!!! jajaja...

Alguien q sepa el porq?... sigo intentando solucionarlo

{Saludos}

Última edición por b3nshi fecha: 03-08-2007 a las 16:33:45.
Responder Con Cita
  #10  
Antiguo 03-08-2007
Avatar de b3nshi
b3nshi b3nshi is offline
Miembro
 
Registrado: feb 2005
Ubicación: Tucuman - Argentina
Posts: 164
Poder: 20
b3nshi Va por buen camino
Mejorando el Seudo-Manual con el Truco de Eduarcol

Bueno... les cuento q con los q dijo eduarcol logre establecerla a la conexion... por supuesto q no lo hice solo... jajaja... en realidad busque por internet y encontré el metodo q el dice... por ahora voy a explicar los paso para la conexion... mas adelante ire descubriendo bien el porq de todas estas cosas... jajaja... y por las dudas... lo saque de una web de brazil...

Debemos insertar un SQLconnection, SQLDataSet, DataSetProvider, ClientDataSet y un DataSource.

SQLconnection
Login Prompt = False
Connected = True

Name = sqlconnection1
(Por supuesto q hay q establecer la conexion como lo veniamos haciendo)


SQLDataSet
SqlConnection = sqlconnection1
Name = sdstabla
CommandText = select * from TABLA
Active = False


(Le hacemos doble clic al componente y presionamos control+F y asi se agregar todos los campos)


DataSetProvider
Propriedade = Valor
dataset = sdstabla
Name = dsptabla


ClientDataSet
Propriedade = Valor
Providername = dsptabla
Name = cdstabla
Active = True


(Hay q adicionar todos los campos como se hizo con el SQLDataSet)

DataSource
Propriedade = Valor
DataSet = cdsTabla
Name = dsTabla


Finalmente solo se trata de insertar un dbgrid o donde quieran mostrar la info de la tabla y conectar con el data source... por las dudas si no les muestra los campos en el datasource insertenlo manualmente

Despues sigo completando! El q quiera puede seguir ayudando!
{Saludos}
Responder Con Cita
  #11  
Antiguo 03-08-2007
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
Bueno a mi esa solucion me parece mas bien un truco

habria que ver el porq??
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #12  
Antiguo 04-08-2007
Avatar de b3nshi
b3nshi b3nshi is offline
Miembro
 
Registrado: feb 2005
Ubicación: Tucuman - Argentina
Posts: 164
Poder: 20
b3nshi Va por buen camino
jaja... si puede ser... depende como lo veas... en realidad no encontre otra forma de establecer la conexion con las dbexpress... por lo q no creo q sea un truco... si se puede decir q es un metodo...

Ahora la cuestion es como hacer para agregar, modificar y eliminar registros de la tabla... alguna idea? o truco?...

Estoy intentando pero la verdad q ya no se como hacerlo... lo intente con:

Código:
sqltable1.append;
sqltable1.fieldbyname('').asstring := '' ; //Lo estoy escribiendo de memoria, por
//lo q puede haber algun error pero creo q se entiende cual es el metodo...
 
//Tambien lo intente haciendo uso de un query... pero no dio resultado...
Alguna idea
Gracias!!
{Saludos}

Última edición por b3nshi fecha: 04-08-2007 a las 00:07:27.
Responder Con Cita
  #13  
Antiguo 22-08-2007
JosepGA JosepGA is offline
Miembro
 
Registrado: jun 2007
Ubicación: Tarragona
Posts: 166
Poder: 17
JosepGA Va por buen camino
Guardar registros

Hola, como bien dices es la forma de implementar el acceso a la base de datos con dbexpress, el ClientDataSet el el componente que te permite navegar con una tabla unidireccional a traves del DataSetProvider. Para guardar registros, en el momento que te interese, deberas llamar al metodo ApplyUpdates( nRegistrosConErroresPermitidos ) para que guarde los cambios realizados en el componente ClientDataSet (mirate la implementación del ReconcileError ). Tanto en el SQLDataSet como en el ClientDataSet, tendrás que indicar en las columnas de estos componentes (FieldColumns), cuales son los campos clave para la actualización (propiedad ProviderFlags, las tres primeras a TRUE, y en el resto de campos solo la primera a TRUE ). Tambien deberás aplicar los parametros pertinentes al DataSetProvider para permitir eliminación de registros en cascada, actualización de varios registros, etc...

Si quieres establecer una relación maestro-detalle, deberas conectar dos SQLDataSet mediante un DataSource y dos ClientDataSet, conectando el segundo al primero mediante su propiedad DataSetField, el cual es una columna del primer ClientDataSet ( al añadir las columnas en el ClientDataSet, el ultimo campo es del tipo ClientDataSet ). La sentencia SQL para el segundo SQLDataSet es del tipo siguiente:

Código SQL [-]
SELECT * FROM TABLA2 WHERE CAMPOCLAVE = :CAMPOCLAVE ORDER BY CAMPOCLAVE2

la declaración
Código:
:CAMPOCLAVE
significa que agui tienes que poner el nombre del campo del SQLDataSet1 que se identifica con el del SQLDataSet2, al poner los dos puntos indicas que es un parametro que se recibe del SQLDataSet1 en forma de campo de la tabla y sin que tu lo tengas que especificar.

Espero que te aclare un poco el uso de DBExpress.

un saludo
Responder Con Cita
  #14  
Antiguo 03-09-2007
Avatar de b3nshi
b3nshi b3nshi is offline
Miembro
 
Registrado: feb 2005
Ubicación: Tucuman - Argentina
Posts: 164
Poder: 20
b3nshi Va por buen camino
No logro grabar datos

Hola... de nuevo estuve retomando la idea de usar dbexpress, y bueno lo que hice fue insertar un sqlquery, en la propiedad sql, en tiempo de ejecucion le cargo la siguiente sintaxis:

Código Delphi [-]
sqlquery.sql.add(widestring('insert into PASCIENTES ( APELLIDO, NOMBRE, DIRECCION, 
EDAD, NACIMIENTO, TELEFONO, SEXO)  values (' + edit1.Text + ',' + edit2.Text + ',' 
+ edit3.Text + ',' + edit4.Text + ',' + edit5.Text + ',' + edit6.Text + ',' 
+ edit7.Text + ')');
sqlquery.active:= true;

Algo asi es el codigo, pero me aparece un error, por lo que no logro guardar los datos, no se si el error que me aparece sera importante de colocar, porq ni siquiera se si estoy haciendo bien las cosas... por eso si alguien cree q esta bien, entonces posteo el mensaje, y sino alguien puede ayudarme para guardar la info en una tabla?

Muchisimas Gracias!

{Saludos}

Última edición por b3nshi fecha: 03-09-2007 a las 07:04:13. Razón: porq el codigo delphi es muy ancho
Responder Con Cita
  #15  
Antiguo 03-09-2007
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 20
basti Va por buen camino
Los campos que no sean numéricos debes ponerlos entre comillas

Código Delphi [-]
sqlquery.sql.add(widestring('insert into PASCIENTES ( APELLIDO, NOMBRE, ...)  values (' + quotedstr(edit1.Text) + ',' + quotedstr(edit2.Text) + ... + ')');
sqlquery.active:= true;
__________________
Saludos.
Responder Con Cita
  #16  
Antiguo 03-09-2007
Avatar de b3nshi
b3nshi b3nshi is offline
Miembro
 
Registrado: feb 2005
Ubicación: Tucuman - Argentina
Posts: 164
Poder: 20
b3nshi Va por buen camino
Muchas Gracias Basti por la correccion, y evidentemente iba por ahi la cuestion, pero ahora tengo otro problema, me aparece el siguiente error:

'query: Cursor not returned from Query'

Por las dudas lo unico q cambie en mi TSQLQuery de las propiedades es la propiedad: SqlConnection, luego le dejo el active en false ya que no tiene ningun codigo ingresado en la propiedad sql...

Alguna idea?

Y tambien como hago para guardar una fecha?

Una vez mas muchas gracias!

{Saludos}
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
de turbo delphi a Lazarus totote Lazarus, FreePascal, Kylix, etc. 3 12-06-2007 07:15:21
Turbo Delphi o BDS Ezecool Varios 1 04-06-2007 20:56:55
Turbo delphi explorer mario2000 Noticias 10 15-05-2007 23:23:08
Turbo delphi gratuito? fedelphi Noticias 20 22-11-2006 01:56:45
Imprimir con Turbo delphi jorllazo Impresión 8 01-11-2006 19:16:02


La franja horaria es GMT +2. Ahora son las 22:55:30.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi