PDA

Ver la Versión Completa : reconocer todos los comandos de SQL


M@rcos
21-06-2003, 08:03:12
Hola a todos.
saben? quiero ayudar a un amigo que estudia Ciencias económicas a aprender SQL y como no tiene mucha idea de computadoras necesita practicar y ver bien claritos los resultados, ¿cómo hago una aplicación que soporte todas las sentencias de SQL? porque resulta que hice el clásico ejemplo de un Memo, un BDGrid, un DataSource y un Query. Así lo que se escribe en el Memo entra como cadena del query.
Query.SQL.add:=Memo.lines
pero en el ejemplo que yo tenia, antes y despues de esto habia que poner
Query1.Close
...
Query1.Open

pero cuando quise utilizar funciones de agregado de registros o eliminacion no funcionaba, encontré en la ayuda que en esos casos habia que poner

Query1.Close
...
Query1.ExecSQL

He aquí mi pregunta
¿cuales sentencias van con Query.Close y cuales con Query.ExecSQL? ¿hay otras sentencias de SQL que necesiten una instruccion distinta a las dos anteriores? o ¿hay algo mal en mi concepto?
Yo y mi amigo agradeceremos mucho cualquier colaboración, cunato mas extensa mejor!!!! chau

__marcsc
21-06-2003, 11:12:30
Hola,

solamente puedes abrir un query con Open o ExecSQL. La diferencia está en que si el query devuelve un conjunto de datos (osea, se trata de un select) debes utilizar Open, mientras que si solamente se trata de enviar el comando al servidor (sin que éste tenga que devolver nada) tienes que utilizar ExecSQL.

Saludos.

marcoszorrilla
21-06-2003, 13:10:29
Si haces una consulta de Tipo QBE (Query By Example), con el Database Desktop, o simplemente abres una base de datos del tipo Access y con el asistente gráfico para consultas construyes consultas y luego de comprobar que funcionan como tu quieres pulsas en el menú y seleccionas Ver SQL, tendrás múltiples ejemplos de sentencias SQL.

El resto ya te contestó adecuadamente Marcsc

"Je pense, donc je suis"
Descartes.

Un Saludo.

Javier Buendia
30-06-2003, 12:20:02
Hola, porque no intentas lo siguiente:
query1.sql.add(memo1.lines);
try
query1.open;
except
try
query1.execsql;
except
raise;
end;
end;

De esta forma primero intentas abrir la consulta y si falla la ejecutas.

Un saludo