Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Actualizar campos de una Tabla cuando se actualize otra tabla (https://www.clubdelphi.com/foros/showthread.php?t=73657)

RedVenom 10-05-2011 00:38:51

Creo que diste en el clavo pero quiero en tender que hace parte del codigo por eso deseo preguntar que hace esta parte:
Código Delphi [-]
' HAVING (((Calificaciones.id_m)= :Mat) AND ((Grupos.id_g)= :Grup)); ';
  QTemp1.Parameters[0].Value:= ComboBox8.Text;
  QTemp1.Parameters[1].Value:= ComboBox7.Text;

Ya se que el HAVING es parte del SQL del query pero deseo entender cual es su funcion porque en esa parte del codigo me pierdo.
Gracias

Caral 10-05-2011 02:29:40

Hola
Having y where son prácticamente lo mismo.
La diferencia es que si se usa un group by el where va delante y el having va despues, Claro, o uno u otro, no los dos a la vez.
Hacen esencialmente lo mismo, por lo menos asi lo veo yo.
Supongo que esa es tu duda?.
Saludos

RedVenom 10-05-2011 03:49:31

Eso suponia que hacia las veces del where, pero en la setencia no entiendo la parte de ":Mat" y ":Grup" supongo que son variables que le pasas pero de donde lo tomas?? y que funcion tiene el parameters[ ] del ADOQuery.

Caral 10-05-2011 04:12:01

Hola
El mat y el grup NO son variables, son parametros que se le dan a la sentencia sql y van precedidos por dos puntos ( : ).
Cuando uno quiere un dato en la sentencia se coloca un parametro, el nombre no importa, igual puede ser mat o pepe o grup o ana.
Yo normalmente le pongo un nombre que me guie, la puse mat, para acordarme que necesito un dato de una materia y le puse grup para acordarme que necesito un grupo.
parameters[ ] es el que le va a dar el dato que pide la sentencia sql.
Va de 0 a lo que sea.
como ves aqui:
QTemp1.Parameters[0].Value:= ComboBox8.Text;
El query (Qtemp1), Da el valor del parametro numero (0) del combobox (8) que pidio el parametro :Grup que puse en la sentencia sql.
Espero te quede mas claro.
Saludos

RedVenom 11-05-2011 03:21:16

hasta ahi voy entendiendo, pero tengo otra duda como sabes que parametro corresponde del qtemp1 correspond al :mat o al :grup de la sentencia los declaras en algun lado???

Caral 11-05-2011 03:27:42

Hola
Veamos un ejemplo mas sencillo:
Código SQL [-]
Select * from tutabla where dia = :PrimerParametro and año = :Segundoparametro and mes = :Tercerparametro
Los datos que sacaremos empiezan de cero, quiere decir que el primerparametro sera cero, el segundo uno y el tercero dos, asi:
Código Delphi [-]
TuQuery.Parameters[0].Value:= ElDato1; //PrimerParametro
TuQuery.Parameters[1].Value:= ElDato2; //Segundoparametro
TuQuery.Parameters[2].Value:= ElDato3; //Tercerparametro
Saludos

RedVenom 11-05-2011 18:04:24

Entendido y anotado ahora mi problema es que SQL Server no acepta DISTINCTROW y entonces deberia hacerlo con DISTINCT pero veo que no funciona de la misma manera.

Caral 11-05-2011 18:15:08

Hola
Efectivamente, son muy similares, pero por alguna razon, que por supuesto no se cual es, DISTINCTROW devuelve los valores con mas eficiencia que DISTINCT ya que parece que ROW suena a columna o algo asi.
Lo que he hecho en esos casos es usar conjuntamente con el DISTINCT, MAX, MIN u otro que me ayude.
Creo que le pides explicaciones a la persona equivocada, yo estoy en esto hace muy poco y no se de muchisimas cosas nada.
Saludos

RedVenom 11-05-2011 18:19:38

Te agradezco muchisimo tu ayuda y orientacion, y pues para tener muy poco en esto me parece que sabes baastante. Me has iluminado en lo que respecta la codigo de mi aplicacion, con tus explicaciones y ejemplos he resuelto muchas detalles que tenia y aclarado dudas.
De nuevo agradezco el interes en el apoyo a los que menos sabemos.


La franja horaria es GMT +2. Ahora son las 03:48:06.

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