Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
Como Bajar Una Linea De Codigo Larga En Gambas
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje 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
 



 
metalgearxd - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Bajar Una Linea De Codigo Larga En Gambas 
 
Shell escribió: [Ver mensaje]
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?
 



 
metalgearxd - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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 ")")

 

 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Bajar Una Linea De Codigo Larga En Gambas 
 
Shordi:

Guau... buen código...

Saludos
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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)...
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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 
Haseo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Como Pasar Los Graficos A Codigo Fuente En... metalgearxd General 5 Martes, 22 Enero 2013, 20:15 Ver último mensaje
Dani26
No hay nuevos mensajes Como Bajar Una Linea De Codigo Larga En G... metalgearxd General 6 Miercoles, 30 Enero 2013, 04:31 Ver último mensaje
razaAztk
No hay nuevos mensajes Función Con Muchos Parámetros. Una Linea... Shell General 2 Martes, 15 Abril 2014, 13:31 Ver último mensaje
vuott
No hay nuevos mensajes Seguir En Siguiente Linea De Codigo stongench General 8 Domingo, 14 Junio 2015, 10:33 Ver último mensaje
Shell
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
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



  

 

cron