|
Página 1 de 2
|
Como Bajar Una Linea De Codigo Larga En Gambas
Autor |
Mensaje |
metalgearxd
Programador
Registrado: Diciembre 2012
Mensajes: 100
Edad: 32 Ubicación:
|
Como Bajar Una Linea De Codigo Larga En Gambas
hola a todos , bueno ten un probelemita en gambas ya que esta cais al tope de poner lineas de codigo larga sin poder bajarla por partes y no se como hacerlo
aqui les muestro un codigo :
SUB CONTACTOSNUEVOS()
DIM sql AS String 'Variable para guardar la sentencia sql
DIM agregar AS Result
IF TxtCedula.Text <> "" AND Txthistoria.Text <> "" AND TxtNombre.Text <> "" AND TxtApellido.Text <> "" THEN
sql = "insert into contactos(cedula,nhistoria,nombre,apellido,sino,estadocivil,estudios,analfabeta,aprobados,lnacimiento,fnacimiento,estado,pais,direccion,telefono,religion,establecimiento,municipio,parroquia,comunidad,etnias,madre,ocupacion,padres,ocupacion1,representante)"
sql = sql & "values('" & TxtCedula.Text & "','" & Txthistoria.Text & "','" & TxtNombre.Text & "','" & TxtApellido.Text & "','" & siyno & "','" & estado & "','" & estudio & "','" & analfa & "','" & Txtanosaprobados.Text & "','" & Txtnacimiento.Text & "','" & Txtfnacimiento.Text & "','" & Txtestado.Text & "','" & Txtpais.Text & "','" & Txtdireccion.Text & "','" & Txttelefono.Text & "','" & Txtreligion.Text & "','" & Txtestablecimiento.Text & "','" & Txtmuninicipio.Text & "','" & Txtparroquia.Text & "','" & Txtcomunidad.Text & "','" & Txtetnias.Text & "','" & Txtmadre.Text & "','" & Txtocupacion.Text & "','" & Txtpadre.Text & "','" & Txtocupacion1.Text & "')" &
sql = sql & "values( '" & represen & "')" (esta parte utilize el "&" pero no me funciona me sale "Void Query")
agregar = conexion.$Con.Exec(sql)
'Clear()
Message.Info("<i>SE AGREGADO EL NUEVO REGISTRO</i>")
ELSE 'Si alguno de los textbox se encuentran vacío
Message.Error("DEBES LLENAR DATOS BASICOS") 'Envío el mensaje
ENDIF
CATCH
Message.Warning(Error.Text)
END
bueno ahora que lo muestro se ve que si bajo jejeje pero en gambas no y ya agrege el "&" como lo pueden ver pero me sale este error " Void Query" probe muchas cosas y nada
|
#1 Lunes, 11 Febrero 2013, 23:34 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Como Bajar Una Linea De Codigo Larga En Gambas
metalgearxd:
Cuando tienes una sentencia muy larga y estés probando esa linea puedes:
- Partirla en varias lineas. O asignar el contenido a varias variables tipo cadena
- Luego puedes concatenarlas luego con &
Tu tienes que ver lo que es mejor para tu manera de hacerlo.Como estas comprobando, aplicas diferentes posibilidades.
No abarques toda la sentencia al principio, ve por partes.
Recuerda que los comentarios siempre usamos en el código:
'Esto es un comentario.
No puedes usar un ( ). Puede confundir o confundirnos.
¿ Es correcto que hayas puesto & al final de toda la expresión ?. Creo que no, ¿ y si eso concatena con lo de abajo ?.
Abajo tienes puesto
sql = sql &.....
Y arriba hay un &
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#2 Martes, 12 Febrero 2013, 00:54 |
|
|
metalgearxd
Programador
Registrado: Diciembre 2012
Mensajes: 100
Edad: 32 Ubicación:
|
Re: Como Bajar Una Linea De Codigo Larga En Gambas
metalgearxd:
Cuando tienes una sentencia muy larga y estés probando esa linea puedes:
- Partirla en varias lineas. O asignar el contenido a varias variables tipo cadena
- Luego puedes concatenarlas luego con &
Tu tienes que ver lo que es mejor para tu manera de hacerlo.Como estas comprobando, aplicas diferentes posibilidades.
No abarques toda la sentencia al principio, ve por partes.
Recuerda que los comentarios siempre usamos en el código:
'Esto es un comentario.
No puedes usar un ( ). Puede confundir o confundirnos.
¿ Es correcto que hayas puesto & al final de toda la expresión ?. Creo que no, ¿ y si eso concatena con lo de abajo ?.
Abajo tienes puesto
sql = sql &.....
Y arriba hay un &
Saludos
entonces como va?
|
#3 Martes, 12 Febrero 2013, 01:03 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Como Bajar Una Linea De Codigo Larga En Gambas
Como en todo, hay varias maneras. La más parecida a lo que has intentado sería algo así:
dim strvalores strCampos as string
strcampos="cedula,nhistoria,nombre,apellido,sino,estadocivil,estudios,analfabeta,aprobados,lnacimiento,fnacimiento,estado,pais,direccion,telefono,religion,establecimiento,municipio,parroquia,comunidad,etnias,madre,ocupacion,padres,ocupacion1,representante "
strvalores= TxtCedula.Text & "','" & Txthistoria.Text & "','" & TxtNombre.Text & "','" & TxtApellido.Text & "','" & siyno & "','" & estado & "','" & estudio & "','" & analfa & "','" & Txtanosaprobados.Text & "','" & Txtnacimiento.Text & "','" & Txtfnacimiento.Text & "','" & Txtestado.Text & "','" & Txtpais.Text & "','" & Txtdireccion.Text & "','" & Txttelefono.Text & "','" & Txtreligion.Text & "','" & Txtestablecimiento.Text & "','" & Txtmuninicipio.Text & "','" & Txtparroquia.Text & "','" & Txtcomunidad.Text & "','" & Txtetnias.Text & "','" & Txtmadre.Text & "','" & Txtocupacion.Text & "','" & Txtpadre.Text & "','" & Txtocupacion1.Text & represen
agregar = conexion.$Con.Exec("insert into contactos (" & strcampos & ") values(" & strvalores ")")
|
#4 Martes, 12 Febrero 2013, 09:21 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Como Bajar Una Linea De Codigo Larga En Gambas
Para más sencillez en el código, puedes usar la funcion subst, y te ahorras teclear tana comilla y tanta coma.
SUBST("insert into tabla(campo1,campo2,campo3) values (&1,&2,&3....etc)", txtuno.text, txtdos.text, txttre.text,....etc)")
y por último, en lugar de sentencia sql, puedes usar un result de gambas y un bucle:
(Para éste ejemplo es necesario que el nombre del textBox sea "TXTnombredelcampo")
public sub grabacampos(elformulario as obj, latabla as string)
dim elresult as resutl
dim campo as resultfield
dim ctr as obj
elresult=miconexion.create(latabla) 'ponemos el result en modo de creación
for each campo in elresult.fields 'recorremos todos los campos del result
for each ctr in elformulario.controls 'para cada campo del result lo comparamos con los controles del formularios
if lcase(ctr.name)=lcase("txt" & campo.name) then 'Si el control se llama "txt" + el nombre del campo
elresult[campo.name)=ctr.Text 'asignamos el valor del text del control al result
break
endif
next
next
elresult.update 'actualizamos la base de datos
elresult.commit 'confirmamos la grabación
message("El registro se actualizó correctamente")
catch
message.error("Se produjo el error: " & Error.text)
Un poco más oscuro de leer el código, quizá, pero te vale para cualquier formulario que hagas ¡sin tener que volver a escribir esas sentencias largas y trabajosas en todo tu proyecto!
Además, al no contener el nombre de ningún campo concreto, no tienes que modificar el código en absoluto si haces cambios en la base de datos: Con que añadas o modifiques el textbox nuevo y te asegures que su nombre es TXTcampo, funcionará sin problemas.
última edición por shordi el Martes, 12 Febrero 2013, 09:51; editado 2 veces
|
#5 Martes, 12 Febrero 2013, 09:47 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 50 Ubicación: dos hermanas, sevilla
|
Re: Como Bajar Una Linea De Codigo Larga En Gambas
Shordi:
Guau... buen código...
Saludos
|
#6 Martes, 12 Febrero 2013, 18:02 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Como Bajar Una Linea De Codigo Larga En Gambas
Gracias Julio.
Es sólo un ejemplo que sólo vale para textboxes... pero se puede mejorar fácilmente para que valga para cualquier control... algo así:
public sub grabacampos(elformulario as obj, latabla as string)
dim elresult as resutl
dim campo as resultfield
dim ctr as obj
elresult=miconexion.create(latabla) 'ponemos el result en modo de creación
for each campo in elresult.fields 'recorremos todos los campos del result
for each ctr in elformulario.controls 'para cada campo del result lo comparamos con los controles del formularios
if lcase(ctr.name)=lcase("txt" & campo.name) then 'Si el control se llama "txt" + el nombre del campo
if ctr Is ValueBox Or ctr Is CheckBox Or ctr Is RadioButton Or ctr Is DateBox Then 'Un valuebox es un textbox mejorado y devuelve cierto si preguntas is textbox. Por eso hay que preguntar primero por valuebox
elresult[campo.name]=ctr.Value 'asignamos la propiedad value del control al result
Else
elresult[campo.name]=ctr.Text 'asignamos la propiedad text del control al result
Endif
break
endif
next
next
elresult.update 'actualizamos la base de datos
elresult.commit 'confirmamos la grabación
message("El registro se actualizó correctamente")
catch
message.error("Se produjo el error: " & Error.text)
end
última edición por shordi el Martes, 12 Febrero 2013, 18:38; editado 1 vez
|
#7 Martes, 12 Febrero 2013, 18:37 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Como Bajar Una Linea De Codigo Larga En Gambas
Yo utilizo desde hace tiempo una versión más compleja aún, pero esta es funcional.
Lo ideal es que los controles se llamen igual que los campos (nada de TXTcampo, que no tiene mucho sentido)...
|
#8 Martes, 12 Febrero 2013, 18:46 |
|
|
Haseo
Pedro
Usuario
Registrado: May 2011
Mensajes: 26
Edad: 33 Ubicación: Coquimbo, Chile
|
Re: Como Bajar Una Linea De Codigo Larga En Gambas
La que utilizo yo es esta ...
sql = "insert into contactos(cedula,nhistoria,nombre,apellido,sino,estadocivil,estudios,analfabeta,"
sql = sql & "aprobados,lnacimiento,fnacimiento,estado,pais,direccion,telefono,religion,establecimiento,"
sql = sql & "municipio,parroquia,comunidad,etnias,madre,ocupacion,padres,ocupacion1,representante)"
sql = sql & "values('" & TxtCedula.Text & "','" & Txthistoria.Text & "','" & TxtNombre.Text & "',"
sql = sql & "'" & TxtApellido.Text & "','" & CombSexo.Text & "','" & CombEstadoCivil.Text & "','" & CombEstudios.Text & "',"
sql = sql & "'" & CombAnalfabeta.Text & "',"
sql = sql & "'" & Txtanosaprobados.Text & "','" & Txtnacimiento.Text & "','" & Txtfnacimiento.Text & "',"
sql = sql & "'" & Txtestado.Text & "','" & Txtpais.Text & "','" & Txtdireccion.Text & "','" & Txttelefono.Text & "',"
sql = sql & "'" & Txtreligion.Text & "','" & Txtestablecimiento.Text & "','" & Txtmuninicipio.Text & "','" & Txtparroquia.Text & "',"
sql = sql & "'" & Txtcomunidad.Text & "','" & Txtetnias.Text & "','" & Txtmadre.Text & "','" & Txtocupacion.Text & "','" & Txtpadre.Text & "',"
sql = sql & "'" & Txtocupacion1.Text & "','" & CombRepresentante.Text & "')"
agregar = conexion.$Con.Exec(sql)
al escribirla aquí se desordeno un poco XD
última edición por Haseo el Martes, 12 Febrero 2013, 19:21; editado 3 veces
|
#9 Martes, 12 Febrero 2013, 19:18 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Como Bajar Una Linea De Codigo Larga En Gambas
metalgearxd:
Si el ejemplo de Shordi te parece mas avanzado (que lo es), con el uso de bucles (si aun no conoces el bucle for each), la forma de concatenar
que usa Haseo esta bastante bien. Pero no olvides estudiar el de Shordi, que se las ha ingeniado bastante.
Los programadores de antes ,cuando trabajaban con maquinas de 8 bits hacían equilibrios con el código, para hacer lo que hacemos hoy
de una manera mas fácil, pero ellos no tenían esas posibilidades que tenemos ahora. Su herencia ha quedado para todos los que continuamos
aprendiendo de ellos y de su experiencia.
Así que si añades una persona que hacia esas cosas con el código para obtener un resultado y luego la tecnología mas moderna, imagina hasta donde puede mejorar.
Saludos.
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#10 Miercoles, 13 Febrero 2013, 00:22 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 2
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|