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 Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-09-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 20
Elite237 Va por buen camino
Red face DBGrid

Hola Caro, gracias por tu tip, ya pude lograr lo del combobox, ahora mi duda es la siguiente, quiero que al momento de hacer doble clic me genere una consulta que me valide que lo que estoy haciendo clic sea igual a otro campo y me la muestre en otro DBgrid. Como le hago?Este es mi codigo de prueba:se que lo tengo que hacer en el evento dblclic, pero me manda un error con la sintaxis.

Código Delphi [-]
procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
     query1.close;
     query1.sql.clear;
     query1.sql.add('select scob_ncobros,scob_periodo,scob_vendedor,scob_fecha from TSCOBROS');
     query1.sql.add('where scob_vendedor = '''+DBgrid1.cells[6, sgPorVenta.row]+''' and scob_fecha>=''2008-08-01 09:00:00'' and scob_fecha<=''2008-08-31 21:00:00''');
     query1.open;
     showmessage(IntToStr(query1.recordcount));
Responder Con Cita
  #2  
Antiguo 13-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 ninguno.

Gracias por tu ayuda. En verdad lo he probado y tu código funciona perfectamente.

El problema es que ahora ya estoy trabajando con 4 tablas.

El asunto del Memo tiene que salir siempre la palabra o frase que introduzca el usuario y la respuesta que encuentre en la tabla 2 o en la 4.
Esto es: frase y respuesta.

Si has seguido el hilo verás que lo que estoy intentando es crear un programa de IA, na especie de Chattbot.

La mejor referencia que tengo es de un programa llamado Zebal que se escribió en Clipper. No hay código fuente, pero si las BD y tablas que utilizaba.

Es muy curioso el funcionamiento que se descubre al analizar las tablas.
Si le entras por ejemplo la frase 'estoy frito', te contesta 'que se siente al estar frito' o bien 'dime como es estar frito'. Como verás al detectar la palabra 'estoy' busca en las tablas y si la encuentra contesta con una de las frases vinculadas 'que se siente al estar' o 'dime como es estar' añadiéndole la palabra frito.

Como verás todo un lío.

Ademas hay palabras o frases con una número de clave en la tabla1 que se vinculan en la tabla2 con dicho número de clave, pero que a veces existe 5 o 6 veces. Es decir escoge la respuesta entre ellas ara que no sea siempre la misma.

Bueno además tiene otras lindezas, como preguntar el nombre del usuario, guardarlo y si vuelves a "charlar" al cabo de 3 meses, te dice qye cuanto tiempo sin hablar contigo.

Bueno, no te canso más.

Veremos como salgo de ésta.

Saludos.

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

Me alegra que te funcionara

Lo de 2 o 4 tablas es lo de menos, la idea al momento de realizar el if sería la misma

Con respecto a lo del memo, puedes hacer algo así

Código Delphi [-]
    Memo1.Lines.Add(Edit1.Text);
    if (Table1.Locate('palabra', Edit1.Text, [loCaseInsensitive])) and
       (Table2.Locate('NUMERO', Table1.fieldByName('NUMERO').AsString, [loCaseInsensitive])) then
      Memo1.Lines.Add(Table2.fieldByName('RESPUESTA').AsString);

pero tienes que tener en cuenta la posibilidad (aunque sea remota) de que el resultado de la búsqueda no retorno resultado alguno y, en esa situación, retornar algún tipo de respuesta estándar como "no entiendo la palabra X, podría explicármelo de otra forma", algo así

Código Delphi [-]
    Memo1.Lines.Add(Edit1.Text);
    if (Table1.Locate('palabra', Edit1.Text, [loCaseInsensitive])) and
       (Table2.Locate('NUMERO', Table1.fieldByName('NUMERO').AsString, [loCaseInsensitive])) then
      Memo1.Lines.Add(Table2.fieldByName('RESPUESTA').AsString)
    else
      Memo1.Lines.Add('no entiendo la palabra X, podría explicármelo de otra forma');

El ejemplo es con las 2 tablas, tendrías que adaptarlo a las 4 que uses ahora claro
Responder Con Cita
  #4  
Antiguo 14-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 ninguno.

Tu código ha funcionado perfectamente.
Ya estoy trabajando con las 4 tablas, sin ningún problema.
También he adicionado, en caso de que no encuentre la palabra o frase, el mensaje 'no encuentro lo que me dice, podría definirlo mejor?.Gracias'.

Voy a estar una semana de vacaciones.

De todas formas te comento lo siguiente por si me puedes dar una ayuda.

1.- Quisiera grabar la conversación en una tabla o fichero de texto, según veas mejor.

2.- Como debo hacerlo para que al detectar una palabra que no entiende, dentro de una frase, la guarde para añadirla en la respuesta.
Ejemplo: 'estoy frito'. Hay una frase de respuesta vinculada a 'estoy' que es 'que se siente al estar' y a eso se le ha de añadir 'frito'.

Perdona si estoy abusando mucho de tu amabilidad.
Muchas gracias y un cordial saludo.
Manuel Reixach

P.D. Desde el lugar de vacaciones iré dando un vistazo por el Foro.
Responder Con Cita
  #5  
Antiguo 14-09-2008
ninguno ninguno is offline
Miembro
 
Registrado: sep 2008
Posts: 45
Poder: 0
ninguno Va por buen camino
Hola Abuelo7

Cita:
Empezado por Abuelo7 Ver Mensaje
1.- Quisiera grabar la conversación en una tabla o fichero de texto, según veas mejor.
¿Qué quieres hacer luego con esa información? Es que dependiendo de lo que quieras hacer, será mejor/más fácil una opción u otra.

Cita:
Empezado por Abuelo7 Ver Mensaje
2.- Como debo hacerlo para que al detectar una palabra que no entiende, dentro de una frase, la guarde para añadirla en la respuesta.
Ejemplo: 'estoy frito'. Hay una frase de respuesta vinculada a 'estoy' que es 'que se siente al estar' y a eso se le ha de añadir 'frito'.
Entiendo que la palabra a buscar que puede fallar es lo escrito en Edit1 (si no es así corrígeme), por lo que será sencillo controlar esa palabra en la frase de respuesta:

Código Delphi [-]
    Memo1.Lines.Add(Edit1.Text);
    if (Table1.Locate('palabra', Edit1.Text, [loCaseInsensitive])) and
       (Table2.Locate('NUMERO', Table1.fieldByName('NUMERO').AsString, [loCaseInsensitive])) then
      Memo1.Lines.Add(Table2.fieldByName('RESPUESTA').AsString)
    else
      Memo1.Lines.Add('no entiendo la palabra ' + Edit1.Text + ', podría explicármelo de otra forma');

PD: felices vacaciones
Responder Con Cita
  #6  
Antiguo 14-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 inguno.

El tema de grabación quisiera poder utilizarlo después en futuras conversaciones, por ejemplo recordar nombre de usuario, fecha y demás.

En cuanto al asunto de la respuesta, se trata de lo siguiente:
Parte de lo contenido en el Edit1.Text y que no encuentra, hay que añadirlo al final de la Respuesta que sí ha encontrado.
Es el caso de 'estoy frito'.
Encuentra la respuesta a 'estoy' = 'que se siente al estar'
Le añade 'frito'
Y la respuesta queda así: 'que se siente al estar frito'.

Gracias amigo.

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

Cita:
Empezado por Abuelo7 Ver Mensaje
El tema de grabación quisiera poder utilizarlo después en futuras conversaciones, por ejemplo recordar nombre de usuario, fecha y demás.
Bueno, si es para recordar determinados datos personales y poderlos usar en conversaciones futuras, yo usaría una base de datos (¿Firebird?)

Cita:
Empezado por Abuelo7 Ver Mensaje
En cuanto al asunto de la respuesta, se trata de lo siguiente:
Parte de lo contenido en el Edit1.Text y que no encuentra, hay que añadirlo al final de la Respuesta que sí ha encontrado.
Es el caso de 'estoy frito'.
Encuentra la respuesta a 'estoy' = 'que se siente al estar'
Le añade 'frito'
Y la respuesta queda así: 'que se siente al estar frito'.
Esta parte es la que no termino de entender. Según el código expuesto anteriormente, tu no buscas palabras contenidas en Edit1, sino que buscas todo el contenido de Edit1. Entonces, ¿cómo puedes saber qué palabra usar? ¿O lo que buscas son frases completas? Si es así, ¿Cómo las comparas?
Responder Con Cita
  #8  
Antiguo 16-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 Elite237 Ver Mensaje
ahora mi duda es la siguiente, quiero que al momento de hacer doble clic me genere una consulta que me valide que lo que estoy haciendo clic sea igual a otro campo y me la muestre en otro DBgrid. Como le hago?Este es mi codigo de prueba:se que lo tengo que hacer en el evento dblclic, pero me manda un error con la sintaxis.
Hola Elite237, escribe cual es el error que te sale, que recuerde estas manejando StringGrid verdad, o es que ya lo has cambiado a DBGrid, lo digo por el nombre que tiene "DBgrid1".

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
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 12:32:06.


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