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 25-07-2007
tenporal tenporal is offline
Miembro
 
Registrado: may 2007
Posts: 28
Poder: 0
tenporal Va por buen camino
Saludos Caral, estaba viendo tu tutorial de facturacion y tengo una pregunta

¿ En donde debo instalar la carpeta con la bd?
¿ En donde debo tener el proyecto de delphi ?
Responder Con Cita
  #2  
Antiguo 25-07-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Pues en realidad no me he puesto a pensar en eso, en cualquier lado supongo.
Simplemente en el Datamodule en el adoconnection le das la direccion que quieras.
Hay otra manera y es un archivo ini, si necesitas te lo explico.
Saludos
Responder Con Cita
  #3  
Antiguo 25-07-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Como hay una pregunta del amigo tenporal con relacion a donde colocar la Base de datos y el Programa, he querido dar la opción de hacerlo con un archivo .ini como lo indique antes, me parece practico, asi que va.
Para empezar hay que hacer un archivo ini, Abrimos el block de notas y se coloca esto:
Cita:
[BD]
Path="C:\Facturacion.MDB"
[Logon]
Auto="No"
Login=""
Pass=""
Se guarda en este caso con el nombre de BDatos.ini

Como ven aqui le estoy diciendo que la base de datos esta en C:\ y ya sabemos que se llama Facturacion.mdb, si queremos colocar la base de datos en otra carpeta o sub carpeta simplemente le cambiamos la direccion, ejemplo:
Cita:
[BD]
Path="C:\Programa\MiCarpeta\Facturacion.MDB"
[Logon]
Auto="No"
Login=""
Pass=""
Como ven el resto queda igual, simple verdad.
Ahora vamos a hacer que nuestro programa lea este archivo.
Hay que tener en cuenta que el archivo BDatos.ini, tendra que estar en la misma carpeta que el programa.
Ahora abrimos el programa en Delphi, abrimos el datamodule, en el evento OnCreate del datamodule, ponemos esto:
Código Delphi [-]
procedure TDataModule1.DataModuleCreate(Sender: TObject);// esta parte ya la pone Delphi
Var BaseDeDatos, ConStr : String;
    IniFile: TIniFile;
begin
   // Obtiene la ruta y el nombre de la base de datos
   IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'BDatos.ini');// aqui esta el nombre del archino ini
   BasedeDatos := IniFile.ReadString('BD','Path','');
   If BasedeDatos = '' then ShowMessage('Error al cargar Base de Datos');
   ConStr := 'Provider=Microsoft.Jet.OLEDB.4.0;'+
             'Data Source='+BaseDeDatos+';'+
             'Persist Security Info=False;'+
             'Jet OLEDB : Database Password=admin';
   ADOConnection1.ConnectionString := ConStr;
   ADOConnection1.Open;

end;
Ahora en el uses del mismo DataModule ponemos esto:
Cita:
uses
SysUtils, Classes, DB, IniFiles, ADODB, Forms, Dialogs;
Y a funcionar, ahora cada vez que arranque el programa, buscara primero el archivo BDatos.ini, y se conectara a la base de datos, podeis poner la base de datos donde querais, siempre la encontrara, incluso en red, recordad poner el archivo ini en la misma carpeta donde este el programa.
Espero les sirva, la explicacion.
Saludos
Responder Con Cita
  #4  
Antiguo 26-07-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Siguiendo mi politica de poner los archivos aqui esta el archivo ini, para que lo veáis, por si tenéis dudas.
Saludos

Última edición por Caral fecha: 21-02-2008 a las 18:37:00.
Responder Con Cita
  #5  
Antiguo 28-07-2007
tenporal tenporal is offline
Miembro
 
Registrado: may 2007
Posts: 28
Poder: 0
tenporal Va por buen camino
Question

Otra pregunta amigo Caral

¿Como evitas que el usuario teclee 2 articulos diferentes asignandole la misma clave del articulo?

Por ejemplo:

articulo: 1
Descripcion: Teclado

articulo: 1
Descripcion: Raton

En el modulo de articulos teclee estos 2 registros con la misma clave y me lo acepto sin problemas, pero no tendria aqui llaves duplicadas ¿como resuelvo esto?

Saludos
Responder Con Cita
  #6  
Antiguo 28-07-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Supongo que te refieres al form de articulos, lo que quieres hacer es que el ID del articulo no se repita o no tenga uno igual en la tabla, si es asi.
Ya te respondo, un momento.
Saludos
Responder Con Cita
  #7  
Antiguo 28-07-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Bueno aqui estoy respondiendo a la duda de Tenporal, los cambios los vamos ha hacer en el From de articulos (FArticulos).
Primero:
El Componente DBNavigator1.
A este le quitamos las opciones de Post, Cancel, Refresh., no las necesitamos.
Segundo:
Colocamos un ADOQuery (AdoQuery1) en el from, lo conectamos igual que el adotable1 que tenemos al datamodule en connection (DataModule1.ADOConnection1).
Tercero:
Colocamos un Boton (Guardar) en el Form y en el evento OnClick, ponemos esto:
Código Delphi [-]
 If DBEdit1.Text <> '' then
   Begin
     ADOQuery1.Active:= false;
     ADOQuery1.SQL.Text:= 'Select CodProducto from Articulos Where CodProducto = :cod ';
     ADOQuery1.Parameters.ParamByName('cod').Value := DBEdit1.Text;
     AdoQuery1.Active := true;
     IF ADOQuery1CodProducto.AsString = DBEdit1.Text then
     begin
     MessageDlg('Código ya existe, favor seleccionar otro',mtError,[mbOK],0);
     DBEdit1.Text:= '';
     end
     else
     If ADOTable1.State = dsInsert then
     begin
     ADOTable1.Post;
     ADOTable1.Active:= False;
     ADOTable1.Active := true;
     end;
     end;
Creo que esta facil de entender.
Primero se verifica que el dbedit1 este vacio
Se coloca una consulta al query1 y se busca que, si el parametro es igual al dbedit1 salga un mensaje de lo contrario se grabe en la tabla y se refresque, siempre que la tabla este en modo insert (dsInsert).
Espero sea esto lo que preguntabas y te sirva.
Saludos
Responder Con Cita
  #8  
Antiguo 16-08-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Para seguir con esto y en base a preguntas que me han hecho, vamos a poner un login al proyecto.
Para empezar hay que añadir una tabla a la base de datos:

Tabla: Usuarios
Campos:
CodUsuario, Testo(15)
Nombre, Texto(50)
Clave, Texto(50)

Vamos a añadir el form (FLogin) que esta en el archivo.
Vamos a Project, options, y vamos a cambiar en Main Form, por FLogin, con esto el programa buscara primero este form.

Bueno, creo que no tendreis problemas.
Saludos
__________________
Siempre Novato

Última edición por Caral fecha: 24-01-2008 a las 22:35:13.
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
Reducir Inventario por medio factura josejose Varios 4 26-01-2007 01:23:29
Costo de Inventario NickName SQL 4 09-10-2006 06:30:31
Inventario de Hardware vichovi API de Windows 3 03-01-2005 15:35:10
como planear un inventario peps gmontes Debates 0 21-12-2004 17:01:10
Controlar inventario? AbcXxx Varios 4 12-06-2004 00:54:13


La franja horaria es GMT +2. Ahora son las 21:06:15.


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