Club Delphi  
    Paypal   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 10-09-2008
Abuelo7 Abuelo7 is offline
Miembro
 
Registrado: ene 2006
Ubicación: Igualada(Barcelona) Spain
Posts: 51
Poder: 21
Abuelo7 Va por buen camino
Hola Caro.

La consulta anterior con tu respuesta el programa funcionó correctamente colocando lo [begin] en su lugar.

Quisiera hacerte otra consulta.

Tengo 2 tablas que estan ya llenas de datos y si lograse aprovecharlas me irían muy bien para el programa que estoy haciendo.

La tabla 1, tiene 2 campos 'palabra' y 'numero'
La tabla 2, tiene 2 campos 'numero' y 'respuesta'

Por lo que he podido analizar, parece ser que el número de la primera tabla se corresponde al numero de la segunda tabla.

Resumiendo, si introduces mediante programa una palabra cuyo numero es 2, enlaza con el numero 2 de la segunda tabla que es la respuesta.

Las tablas son .dbf

Crees que podría utilizarlas?
De que forma podría enlazar estos campos?

Gracias amiga.

Saludos
Manuel
Responder Con Cita
  #2  
Antiguo 11-09-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 25
Caro Va por buen camino
Cita:
Empezado por Abuelo7 Ver Mensaje
Crees que podría utilizarlas?
De que forma podría enlazar estos campos?
Hola Manuel, deberías poder utilizarlas, yo no he manejado tablas dbf creo que son de DBase verdad. Supongo que ya te has podido conectar a tus tablas y las puedes ver desde delphi, para poder enlazarlas puedes hacer una consulta.

Código Delphi [-]
 Query1.Close;
 Query1.SQL.Clear;
 Query1.SQL.Text := 'select numero, respuesta from Tabla2 '+
                   ' where numero = '+QuotedStr(Numero);
 Query1.Open;
 
 if Not Query1.IsEmpty then //Si hay registro mostramos la respuesta
   Showmessage(Query1.FieldByName('respuesta').AsString);

donde numero sería una variable que tenga el numero.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #3  
Antiguo 12-09-2008
Abuelo7 Abuelo7 is offline
Miembro
 
Registrado: ene 2006
Ubicación: Igualada(Barcelona) Spain
Posts: 51
Poder: 21
Abuelo7 Va por buen camino
Hola Caro.

He podido solucionar el tema, aunque he empleado otra forma.
Te adjunto el código para que le des un repaso, a ver que tal.

Código Delphi [-]

unit pruebazebal2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, DBTables, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Memo1: TMemo;
    Button1: TButton;
    DataSource1: TDataSource;
    DataSource2: TDataSource;
    Table1: TTable;
    Table2: TTable;
    procedure Button1Click(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
        Close;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

    var
    respuesta : String;
    respuesta2 : String;
begin
     If Key=#13 then
begin
      Table1.Open;
    If Table1.Locate('palabra',Edit1.Text, [loCaseInsensitive]) then
begin
    respuesta := Table1.fieldByName('NUMERO').AsString;
    end;
    Table1.Close;
    Table2.Open;
    If Table2.Locate('NUMERO',respuesta,[loCaseInsensitive]) then
begin
     respuesta2 := Table2.fieldByName('RESPUESTA').AsString;
     end;
     Table2.Close;
    Memo1.Lines.Add(Edit1.Text);
    Memo1.Lines.Add(respuesta2);

    Edit1.Text :='';
    end;
    end;
    

end.

Muchas gracias.

Manuel
Responder Con Cita
  #4  
Antiguo 12-09-2008
ninguno ninguno is offline
Miembro
 
Registrado: sep 2008
Posts: 45
Poder: 0
ninguno Va por buen camino
Hola Abuelo7

A ver qué te parece esta solución:

Código Delphi [-]
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  // si no es la tecla que buscamos, salimos y listo ;-)
  if Key <> #13 then Exit;

  // abrimos tablas
  Table1.Open;
  Table2.Open;
  // ponemos el código en un bloque try..finally para asegurarnos de que pase lo que pase éstas se cierren
  try
    // si localizamos lo buscado en Tabla1 y su resultado en Tabla2, lo añadimos al Memo1
    // Este if funciona debido a que SOLO se evaluará la segunda condición si la primera
    // se cumple (por eso de ser un AND) y si la primera se cumple, ya estamos posicionados
    // en el registro buscado (o al menos eso dice la teoría, no lo he probado xD)
    if (Table1.Locate('palabra', Edit1.Text, [loCaseInsensitive])) and
       (Table2.Locate('NUMERO', Table1.fieldByName('NUMERO').AsString, [loCaseInsensitive])) then
    begin
      Memo1.Lines.Add(Edit1.Text);
      Memo1.Lines.Add(Table2.fieldByName('RESPUESTA').AsString);
    end;
  finally
    Table1.Close;
    Table2.Close;
    Edit1.Text :='';
  end;
end;

En tu código siempre asignas algo al Memo1. Si es lo que quieres, podemos cambiar algo ese código para que así sea. Por otro lado, tu código seguramente te dará algún warning o hint dado que usas respuesta2 sin que ésta esté inicializada (está dentro de un if que no tiene por qué realizarse).

Última edición por ninguno fecha: 12-09-2008 a las 18:45:16.
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
consulta a un query en vez de a una tabla eldiegofg SQL 10 19-09-2007 12:46:39
Consulta Estado de una Tabla SQL Alejandro73 SQL 2 24-06-2007 00:03:00
Crear tabla en una BD en Server A desde consulta en tabla B en server B joaquinalberto MySQL 1 18-05-2007 10:39:27
Grabar Consulta en Tabla don malo Varios 1 12-03-2007 23:45:59
Actualizar una tabla con una consulta de otra tabla JODELSA SQL 2 14-09-2006 04:07:01


La franja horaria es GMT +2. Ahora son las 10:01:11.


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