FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Ayuda para el uso de TQuery
hola espero me puedan dar una mano
Estoy comensando a programar en Sql y necesito un poco de ayuda. Tengo un procedimiento que recibe y almacena un String en mi BD, yo necesitaria realizar un control de "no existencia" de dicho String en la Tabla para asi poder almacenarlo y no se como realizar esto. Usando Ttable realizaba lo siguiente Código:
{para controlar que no se repita} with tabla1 do Begin first; while Not EOF do Begin if (Texto_a_ingresar = tabla1.fieldbyname('Mi_Campo').asstring) then Begin Application.MessageBox('ya existe el texto','Error' ,MB_DEFBUTTON1); exit; {salia} end; next; end; end; {si llegaba aqui era porque no existia} tabla1.insert; // Ponia la tabla en modo insertar... tabla1.fieldbyname('Mi_Campo').asstring:=Texto_a_ingresar; tabla1.post; {guarda} |
#2
|
||||
|
||||
Esto lo puedes "achicar" aún usando un TTable. Tú realizas manualmente la búsqueda pero la componente TTable ya tiene métodos para realizar búsquedas como Locate o FindKey:
Código:
tabla1.open; if tabla1.locate('Mi_Campo', Texto_a_ingresar) then Application.MessageBox('ya existe el texto','Error' ,MB_DEFBUTTON1); else begin tabla1.insert; tabla1.fieldbyname('Mi_Campo').asstring:=Texto_a_ingresar; tabla1.post; end; select * from tabla where Mi_Campo=Texto_a_ingresar y ejecutas la consulta con Query.Open. Si la consulta te regresa por lo menos un registro es que ya existe uno con el texto. Si no te regresa ningún registro entonces lo insertas. // Saludos |
#3
|
|||
|
|||
achicar a nivel de código.... no, pero sí que verás/notarás cambio en el rendimiento
Código:
Query.Close; Query.SQL.Clear; Query.SQL.Add('select * from tabla where campo = ' + QuoteStr('mi_txto') ); Query.Open; if Query.IsEmpty then Añadir |
#4
|
||||
|
||||
Código:
Query.Close; {supongo que siempre se tiene que cerrar el quiery antes de cambiar las lineas de sql? } Query.SQL.Clear; Query.SQL.Add('select * from tabla where campo = ' + QuoteStr('mi_texto') ); {no entiendo el uso de "QuoteStr('mi_texto')" no se puede poner solamente "'mi_texto'" ?} Query.Open; {para ejecutar mi Sql? } if Query.IsEmpty then Añadir Por supuesto, faltaría el control de errores con try...except..end;[/quote] |
#5
|
||||
|
||||
Cita:
Una observación. La idea de que con sql se logra mejor rendimiento es cierta cuando usas una base de datos "real". Si usas Paradox, normalmente el uso de TTable es más eficiente ya que está diseñado para ello. Paradox es particularmente lento con consultas sql que involucran campos de texto como en tu caso. Yo te recomiendo que hagas pruebas para ver cuál te resulta más rápido. // Saludos |
#6
|
||||
|
||||
Cita:
Cita:
Cita:
para usar sql tendria que generar las tablas del tipo SQL Server? Los datos que voy a utilizar son solamente texto "nombres" , rangos predefinidos "ej. pista = "hum" o "moj" o etc " y algunos numeros "enteros" que me recomiendan que utilice? Ttable o Tquery gracias de nuevo |
#7
|
|||
|
|||
Cita:
Cita:
Cita:
|
|
|
|