Ir al contenido



Foto

Uso de SQL en bases de Datos Access con Delphi


  • Por favor identifícate para responder
47 respuestas en este tema

#41 esocrates

esocrates

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 102 mensajes
  • LocationArgentina

Escrito 04 agosto 2010 - 07:51

Hola Caral:
Otra pregunta y no te molesto mas por hoy:

En la base mdb con la que hago pruebas funcionó el ejemplo que te mostré en el anterior post.
El código que ahora te muestro apunta a un campo memo.
No funciona



delphi
  1. begin
  2. Memo1.Lines.Clear;
  3. ADoQuery1.SQL.Text :='Select Notas from lista '+
  4.                                     'Where Notas = :nom';
  5.   AdoQuery1.Parameters[0].Value:= Edit1.Text;
  6.   AdoQuery1.Open;
  7.  
  8.   Memo1.Lines.Add(AdoQuery1.Fields[0].AsString);
  9.  
  10.  
  11. end;



Cada campo tiene varias palabras. Escribo sólo una cuando busco.
He probado con:
'*' + Edit1.text +'*'
y no anda

¿Qué hago mal?
Pienso que tiene que ver con al campo tipo memo. ¿Tendré que probar con LIKE?
¿Alguna sugerencia? Y no te molesto más
Un saludo

  • 0

#42 Caral

Caral

    Advanced Member

  • Administrador
  • 4.241 mensajes
  • LocationCosta Rica

Escrito 04 agosto 2010 - 08:04

Hola
El codigo lo veo bien.
Me da la impresion de que el adoquery lo tienes en el mismo form, si es asi tampoco le veo problema.
No tiene nada que ver el campo memo.
No tienes que probar con Like, no afecta.
No hay que poner las comillas, es un parametro, no las necesita.

No se amigo, lo veo bien, no veo el problema
Saludos
  • 0

#43 Caral

Caral

    Advanced Member

  • Administrador
  • 4.241 mensajes
  • LocationCosta Rica

Escrito 04 agosto 2010 - 08:16

Hola
He modificado el ejemplo para que tambien traiga el campo memo, en este caso Comentario.
No da ningun problema.
Saludos

Archivos adjuntos


  • 0

#44 esocrates

esocrates

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 102 mensajes
  • LocationArgentina

Escrito 04 agosto 2010 - 08:48

Hola
He modificado el ejemplo para que tambien traiga el campo memo, en este caso Comentario.
No da ningun problema.
Saludos

Hola:
Creo haber encontrado cual es el problema.
Si el campo desde donde se busca tiene una palabra funciona bien. Si tiene mas de una palabra y tipeo todas anda. Pero si tipeo sólo una no anda. Independiente si el campo es memo o texto.
La solución no la encuentro. Pero al menos puedo describir mejor el problema.
Por ej. en tu aplicación si agregas a Carlos Mario sólo funcionará si tipeas ambas palabras.
Gracias Caral
Un saludo
  • 0

#45 esocrates

esocrates

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 102 mensajes
  • LocationArgentina

Escrito 05 agosto 2010 - 07:01

Hola Caral:


Hola
He modificado el ejemplo para que tambien traiga el campo memo, en este caso Comentario.
No da ningun problema.
Saludos

Hola:
Creo haber encontrado cual es el problema.
Si el campo desde donde se busca tiene una palabra funciona bien. Si tiene mas de una palabra y tipeo todas anda. Pero si tipeo sólo una no anda. Independiente si el campo es memo o texto.
La solución no la encuentro. Pero al menos puedo describir mejor el problema.
Por ej. en tu aplicación si agregas a Carlos Mario sólo funcionará si tipeas ambas palabras.
Gracias Caral
Un saludo

De este modo funciona:


delphi
  1. begin
  2.  
  3. Memo1.Lines.Clear;
  4. ADoQuery1.SQL.Text :='Select Nombre, Comentario from Alumnos Where (Nombre Like "%Carlos%")'; //El campo tiene el Nombre Carlos Mario
  5.  
  6.  
  7.   AdoQuery1.Open;
  8.  
  9.   Memo1.Lines.Add(AdoQuery1.Fields[1].AsString);
  10. end


Decime que te parece.
Gracias
Un saludo

Nota: para cargar el dato desde un Edit:


delphi
  1. ADoQuery1.SQL.Text :='Select Nombre, Comentario from Alumnos Where ( Nombre Like''%'+ Edit1.Text +'%'')';



  • 0

#46 Caral

Caral

    Advanced Member

  • Administrador
  • 4.241 mensajes
  • LocationCosta Rica

Escrito 05 agosto 2010 - 10:09

Hola
Me parece muy bien.
Saludos
  • 0

#47 esocrates

esocrates

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 102 mensajes
  • LocationArgentina

Escrito 16 agosto 2010 - 04:52

Hola:
Sigo estudiando el tema. Como verán en lo más elemental.
Mi pregunta esta vez es de tipo teórico acerca de la diferencia entre post y execsql.
Tengo entendido que execsql se usa con UPDATE o INSERT. Pero no sé por qué.
Dado este código funcionan cualquiera de las dos en esta base Access y Adoquery


delphi
  1. procedure TAccessSQL.Button4Click(Sender: TObject);
  2. begin
  3. Adoquery1.Close;
  4. Adoquery1.SQL.Clear;
  5. Adoquery1.SQL.Add('Select * from lista');
  6. Adoquery1.Open ;
  7. Adoquery1.Append;
  8. Adoquery1.FieldByName('Nombre').AsString :=Edit1.text;
  9. Adoquery1.FieldByName('Apellido').AsString:=Edit2.Text:
  10. Adoquery1.Post;
  11. //Adoquery1.ExecSQL;
  12. end;



Un saludo

  • 0

#48 Caral

Caral

    Advanced Member

  • Administrador
  • 4.241 mensajes
  • LocationCosta Rica

Escrito 16 agosto 2010 - 05:42

Hola
El post lo hace por que lo hace, te guste, no te guste, tengas un error o no lo tengas y queda la tabla abierta.
El ExecSQL es muy bueno cuando se usa un try excep (o algo asi) ya que si hay un error no se haran los cambios, ademas la tabla no quedara abierta.
De ahi la diferencia mas o menos.
Saludos
  • 0