FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Duda sobre el IBQuery e IBTABle cual usar??
Miren de pronto me surgio una duda ... me recomendaron utilizar IBQuerys en vez de IBTables... si utilizo los IBQuerys para almacenar informacion en vez de las IBtables es necesario utilizar un DATASOURCE??????
La verdad yo pienso que no... por que cuando se almacena informacion por sql INSERT INTO en ese momento estoy dando el nombre de la tabla en donde se almacenaran los datos.. cierto o falso???? es decir estoy guardando datos en la tabla de manera manual.... Si utilizo los querys para almacenar estos se ejecutan por medio de la sentencia EXECSQL verdad??? y me dijeron que luego se cierran estos y despues se abren de nuevo... es cierto???? |
#2
|
||||
|
||||
Saludos
Cita:
Cita:
Clausuras como Insert, Update, Delete se utiliza ExecSql, para el Select se usa Open o Ibquery.Active=True Cita:
__________________
Van Troi De León (Not) Guía, Code vB:=Delphi-SQL, ¿Cómo? Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto! |
#3
|
|||
|
|||
Cita:
Una TIBQuery es una clase derivada de TDataset, porque esta pensada para poder enlazar con los controles visuales mediante un datasource, y poder ver asi los datos en pantalla. Esto hace que sea un objeto mucho mas complejo y lento en ejecucion. Si tu no vas a enlazar nada a esa query, y simplemente quieres ejecutar comandos, para eso esta pensado el objeto TIBSQL, que es mucho mas sencillo lo que implica que consume menos memoria y su codigo se ejecuta mas rapido. Saludos |
#4
|
|||
|
|||
pero como se utilizan los TIBSQL??? de la misma manera que IBSQL??? ...
pero tengo otra duda o mas bien un error.... EStoy introduciendo datos a las tablas por medio de IBQuerys.. estos solo estan enlazados a la base de datos... y en su propiedad Datasource lo tengo en blanco..... pero utilizo unos parametros para introducir cierta informacion... estos parametros se los paso por medio de variables que almacenan informacion de los edits de mi formulario.. pero me marca un error que dice que un campo no esta guardando informacion y este campo es llave primaria y por lo tanto no se puede ejecutar ni guardar informacion en las tablas |
#5
|
||||
|
||||
Saludo
Pon el error exactamenete como te lo presenta y/o mustranos el codigo que utilizas IBSQL es una declaracion del tipo TIbSql
__________________
Van Troi De León (Not) Guía, Code vB:=Delphi-SQL, ¿Cómo? Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto! |
#6
|
|||
|
|||
este es el error que me muestra:
Código:
un mensaje de error que esta en ingles y lo que me dice es que el campo 'Field 'DNI_ALUMNO' must be have a value' o sea que el campo debe tener un valor Código:
procedure TIngresar_alum.BitBtn3Click(Sender: TObject); var dni_a:string; apellidopa:string; apellidoma:string; nombre:string; sex:string; dir:string; local:string; ciud:string; tele:string; fecha_ing:TDateTime; statu:string; imagen:string; edoc:string; carrera:string; sem:integer; cert:integer; fot:integer; act:integer; cur:integer; begin //Se almacena los datos de las cajas de texto en las variables //para evitar perdidas de informacion dni_a:=matricula.Text; apellidopa:=apaterno.Text; apellidoma:=amaterno.Text; nombre:=nombres.Text; sex:=sexo.Text; dir:=direccion.Text; local:=localidad.Text; ciud:=municipio.Text; tele:=telefono.Text; edoc:=edocivil.Text; carrera:=DBLcarrera.KeyValue; fecha_ing:=strtodate(fecha.Text); statu:=status.Text; imagen:=DLgpicture.FileName; sem:=strtoint(semestre.Text); cert:=strtoint(certificado.ValueChecked); act:=strtoint(acta.ValueChecked); fot:=strtoint(fotos.ValueChecked); cur:=strtoint(curp.ValueChecked); //Se insertan los valores en las tablas ModuloSID.IBQuery1.Params[0].AsString:=dni_a; ModuloSID.IBQuery1.Params[1].AsString:=apellidopa; ModuloSID.IBQuery1.Params[2].AsString:=apellidoma; ModuloSID.IBQuery1.Params[3].AsString:=Nombre; ModuloSID.IBQuery1.Params[4].AsString:=Sex; ModuloSID.IBQuery1.Params[5].AsString:=Dir; ModuloSID.IBQuery1.Params[6].AsString:=Local; ModuloSID.IBQuery1.Params[7].AsString:=ciud; ModuloSID.IBQuery1.Params[8].AsString:=Tele; ModuloSID.IBQuery1.Params[9].AsDate:=fecha_ing; ModuloSID.IBQuery1.Params[10].AsString:=statu; MOduloSID.IBQuery1.Params[11].AsString:=edoc; ModuloSID.IBQuery1.Params[12].AsBlob:=imagen; //Se ejecuta el Query 1 para almacenar datos ModuloSID.IBQuery1.ExecSQL; ModuloSID.IBQuery2.Params[0].AsString:=dni_a; ModuloSID.IBQuery2.Params[1].AsString:=carrera; //Se ejecuta el Query 2 para almacenar datos ModuloSID.IBQuery2.ExecSQL; ModuloSID.IBQuery3.Params[0].AsString:=dni_a; ModuloSID.IBQuery3.Params[1].AsInteger:=sem; //SE ejecuta el Query 3 para almacenar los datos ModuloSID.IBQuery3.ExecSQL; ModuloSID.IBQuery4.Params[0].AsString:=dni_a; ModuloSID.IBQuery4.Params[1].AsInteger:=cert; ModuloSID.IBQuery4.Params[2].AsInteger:=act; ModuloSID.IBQuery4.Params[3].AsInteger:=fot; ModuloSID.IBQuery4.Params[4].AsInteger:=cur; //Se ejecuta el Query 4 para almacenar datos ModuloSid.IBQuery4.ExecSQL; //Se abren y cierran las tablas para actualizar sus valores ModuloSID.IBTalumnos.Close; ModuloSID.IBTalumnos.Open; ModuloSID.IBTsemestre.Close; ModuloSID.IBTsemestre.Open; MOduloSID.IBTalum_doc.Close; ModuloSID.IBTalum_doc.Open; ModuloSID.IBTalumno_carrera.Open; ModuloSID.IBTalumno_carrera.Close; end; |
#7
|
||||
|
||||
Una vista rapido me dice que tu codigo esta bien. Puede ser que la sentecia sql (Insert) que utilizas tenga el error.
Chequealo! y/o muestralo para estar un poco mas claro
__________________
Van Troi De León (Not) Guía, Code vB:=Delphi-SQL, ¿Cómo? Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto! |
#8
|
|||
|
|||
este es el codigo sql del IBQuery1
Código:
insert into alumnos values (:dni,:apater,:amatern,:nombre,:sex,:dir,:loc,:ciud,:tel,:fecha,:status,:image,:edoc); Código:
insert into alumnos_carrera values (:dni,:dnicarrera); Código:
insert into alumno_semestre values (:dni,:sem); Código:
insert into alumnos_documentos values (:dni,:cert,:acta,:fots,:curp); |
#9
|
||||
|
||||
No tengo muchos conocimientos de SQL, Pero llevandome de un manual:-P
Prueba esto: Nota:Suponiendo que los parametros tiene el mismo nombre que los campos Suerte
__________________
Van Troi De León (Not) Guía, Code vB:=Delphi-SQL, ¿Cómo? Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto! |
#10
|
|||
|
|||
mira es que en sql si yo utilizo INSERT INTO alumnos ('en esta parte es donde van los campos de la tabla de alumnos pero si no los especifico los almacena en el orden en el que se encuentra la tabla) como ves no es necesario poner los nombres de los atributos ... pero en la clausula VALUES los tengo puesto en el orden en que esta la tabla o sea que no hay problema con el sql
ya no se que hacer.... |
#11
|
||||
|
||||
Pero lo probaste como te dije? Chequea a ver si te funciona, no pierdes nada:P
__________________
Van Troi De León (Not) Guía, Code vB:=Delphi-SQL, ¿Cómo? Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto! |
#12
|
|||
|
|||
siiii y me sigue marcando lo mismo que el campo DNI_ALUMNO debe tener un valor pero no me marca de que tabla y pues cheque las variables declaradas y si me guardan el valor entonces se las paso por los parametros y deben de almacenar los valores pero no se que pasa..
|
#13
|
||||
|
||||
Vamos a hacer esto por cada Query:
Asi verificas si la variable y/o el param se le esta asignando algo
__________________
Van Troi De León (Not) Guía, Code vB:=Delphi-SQL, ¿Cómo? Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto! |
#14
|
|||
|
|||
oye para el MODULOSID.IBQuery1 si mostro los valores tal y como los tienen las variables, guardo el dni del alumno ... pero en el query2 ya no almacena el dni del alumno pero la variable aparece que si lo tiene... pero por que paso esto ??? a que se debe... me puedes explicar???
|
#15
|
||||
|
||||
A qeu se debe? Ni la menor idea :-/
Sigamos probando, tarde o temprano llegaremos al Ki del asunto En el query2, en vez de utilizar la variable para asignarle el string, pon una cadena String directamente 'algo' o matricula.Text y chequea si el param lo acepta
__________________
Van Troi De León (Not) Guía, Code vB:=Delphi-SQL, ¿Cómo? Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto! |
#16
|
|||
|
|||
no lo acepta... y ya intente jalar el dato desde esta para el query 2 instruccion
Código:
IBTalumnos.FieldByName('dni').AsString |
#17
|
||||
|
||||
Pon un boton y un Nuevo Query en el formulario, llamemoslo IBPrueba.
Con la misma sentencia
Suerte
__________________
Van Troi De León (Not) Guía, Code vB:=Delphi-SQL, ¿Cómo? Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto! |
#18
|
|||
|
|||
Busque el Meoyo del asunto compadre... jajajaajaa ya lo tengo logre resolver mi problema....
El codigo quedo de la siguiente manera: Código:
//Se pasan los parametros a los Querys ModuloSID.IBQuery1.Params[0].AsString:=dni_a; ModuloSID.IBQuery1.Params[1].AsString:=apellidopa; ModuloSID.IBQuery1.Params[2].AsString:=apellidoma; ModuloSID.IBQuery1.Params[3].AsString:=Nombre; ModuloSID.IBQuery1.Params[4].AsString:=Sex; ModuloSID.IBQuery1.Params[5].AsString:=Dir; ModuloSID.IBQuery1.Params[6].AsString:=Local; ModuloSID.IBQuery1.Params[7].AsString:=ciud; ModuloSID.IBQuery1.Params[8].AsString:=Tele; ModuloSID.IBQuery1.Params[9].Value:=fecha_ing; ModuloSID.IBQuery1.Params[10].AsString:=statu; ModuloSID.IBQuery1.Params[11].AsBlob:=imagen; MOduloSID.IBQuery1.Params[12].AsString:=edoc; ModuloSID.IBQuery2.Params[0].AsString:=dni_a; ModuloSID.IBQuery2.Params[1].AsString:=carrera; ModuloSID.IBQuery3.Params[0].AsString:=dni_a; ModuloSID.IBQuery3.Params[1].AsInteger:=sem; ModuloSID.IBQuery4.Params[0].AsString:=dni_a; ModuloSID.IBQuery4.Params[1].AsInteger:=cert; ModuloSID.IBQuery4.Params[2].AsInteger:=act; ModuloSID.IBQuery4.Params[3].AsInteger:=fot; ModuloSID.IBQuery4.Params[4].AsInteger:=cur; //Se ejecuta los Querys del 1 al 4 para almacenar datos ModuloSID.IBQuery1.ExecSQL; ModuloSID.IBQuery2.ExecSQL; ModuloSID.IBQuery3.ExecSQL; ModuloSid.IBQuery4.ExecSQL; //Se abren y cierran las tablas para actualizar sus valores MOduloSID.IBTalum_doc.Close; ModuloSID.IBTalum_doc.Open; ModuloSID.IBTalumnos.Close; ModuloSID.IBTalumnos.Open; ModuloSID.IBTalumno_carrera.Open; ModuloSID.IBTalumno_carrera.Close; ModuloSID.IBTsemestre.Close; ModuloSID.IBTsemestre.Open; jajajaaj un poco complicado ... pero no imposible... verdad??? GRax a todos por su ayuda..... |
|
|
|