ExtreemD4t4 Posted December 11, 2013 Report Share Posted December 11, 2013 (edited) Muchachos, tengo un código donde un usuario carga una imágen o varias de , por ejemplo, un auto y el código la toma, la copia y la guarda en una carpeta aparte (pa ke no se borre si el usuario borra la imagen). En una base de datos sql server tengo una tabla que me guarda el ID de la imagen, la ruta donde está guardada y el id del auto asociado a la imagen tengo un código de cómo hacer el visor de imágenes PERO aki viene el problema, el código SOLO toma las imágenes de una carpeta y las muestra, no hace nada más, el problema de esto es que me va a mostrar las imágenes de TODOS los autos, y yo solo quiero que me muestre de uno en específico, cómo podría hacer el código para eso? lo otro, tengo un form que busca un cliente y debería mostrarlo en un datagrid como resultado de búsqueda, lo que yo quiero hacer es que el usuario seleccione el resultado mostrado en el datagrid y mediante un boton (boton editar por ejemplo) se abra otro form que me permita editarlo, esto se puede hacer desde el datagrid? o tendría que almacenar el resultado de la consulta en el boton para que al pincharlo, se abra el formulario con los datos llenos listos para editar? gracias x la ayuda :) Edited December 11, 2013 by ExtreemD4t4 Link to comment Share on other sites More sharing options...
AshWilliams Posted December 11, 2013 Report Share Posted December 11, 2013 (edited) We need info...we need your code!! :tonto: ...napos, muestranos el código que tienes, capaz que sea super fácil adaptarlo para que muestre solo una basado en algo(un id de auto o algo) :tonto: Saludos :krider: Edited December 11, 2013 by AshWilliams Link to comment Share on other sites More sharing options...
ExtreemD4t4 Posted December 12, 2013 Author Report Share Posted December 12, 2013 mira, esto es lo que hace el boton agregar donde se abre el opendialog y copia la imagen a otra carpeta Private Sub Agregar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Agregar.Click Dim openFileDialog1 As New OpenFileDialog() openFileDialog1.InitialDirectory = "C:\Documents and Settings\Equipo\Mis documentos\Mis imágenes" openFileDialog1.Filter = "jpg files (*.jpg)|*.jpg|Bitmap Files (*)|*.bmp;*.gif;*.jpg|All files (*.*)|*.*" If openFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then If Not Directory.Exists("C:\almacenamiento\imagenes") Then 'Crea la carpeta Directory.CreateDirectory("C:\almacenamiento\imagenes") Dim ruta As String = Path.Combine("C:\almacenamiento\imagenes", Path.GetFileName(openFileDialog1.FileName)) If Not File.Exists(ruta) Then TxtRutaImagen.Text = Path.GetFileName(openFileDialog1.FileName) ' Obtengo el nombre del archivo File.Copy(openFileDialog1.FileName, ruta) ImgPicture.ImageLocation = ruta 'Esta es la ruta de mi directorio en mi aplicacion Else MsgBox("La imagen que eligió ya existe, elija otra imagen por favor.") ImgPicture.ImageLocation = "" 'Limpia el picturebox Exit Sub 'obligo a que se salga End If Else Dim ruta As String = Path.Combine("C:\almacenamiento\imagenes", Path.GetFileName(openFileDialog1.FileName)) If Not File.Exists(ruta) Then TxtRutaImagen.Text = Path.GetFileName(openFileDialog1.FileName) ' Obtengo el nombre del archivo File.Copy(openFileDialog1.FileName, ruta) ImgPicture.ImageLocation = ruta 'Esta es la ruta de mi directorio en mi aplicacion Else MsgBox("La imagen que eligió ya existe, elija otra imagen por favor.") ImgPicture.ImageLocation = "" 'Limpia el picturebox Exit Sub 'obligo a que se salga End If End If End If End Sub lo que yo pienso es que debería hacer una consulta a la tabla imagenes y cargar en un , no se, datatable, la ruta de la imagen asociada al auto y mostrar Sólo esas imágenes, pero no sé como hacer la consulta ni como hacer pa que muestre solo las imagenes de ese auto el código para el visor aun no lo hago pk lo saké de este video pero tengo que adaptarlo todavía, pero es esa mas o menos la idea Link to comment Share on other sites More sharing options...
susodicho Posted December 12, 2013 Report Share Posted December 12, 2013 :mmm: ¿Estás seguro que es una aplicación web? Parece aplicación de escritorio. Por lo que veo, te basas en el nombre de archivo para saber si la imagen ya está o no. No sé si eso será buena idea, aunque depende de tu aplicación. En un disco podrías encontrar varios archivos con nombre "Sin título.jpg" en distintas carpetas, pero puede que todos sean diferentes (no son la misma imagen). Así que este detalle quizás te podría servir para asignarle un identificador a cada imagen, o sea, podrías usar un hash para saber si una imagen ya está en la carpeta de almacenamiento (y como nombre de archivo podrías usar el propio hash o algún GUID). Link to comment Share on other sites More sharing options...
ExtreemD4t4 Posted December 13, 2013 Author Report Share Posted December 13, 2013 si. me acabo de dar cuenta que la cree en el foro donde no iba ahahhahhahaha, uta la wea, algun mod que la mueva porfa, conr azon me iba a aplicaciones de escritorio y no la encontraba poh wn xDDDDDDD Link to comment Share on other sites More sharing options...
gatokeko66 Posted December 13, 2013 Report Share Posted December 13, 2013 Tema movido ;) Link to comment Share on other sites More sharing options...
ExtreemD4t4 Posted December 19, 2013 Author Report Share Posted December 19, 2013 ya resolví lo de los directorios xD, para hacerla mas facil hice que por cada registro se creara una carpeta, y dentro de cada carpeta van las imagenes xD, total despues las agarro todas desde esa carpeta y las muestro no mas :B alguien me puede ayudar con la segunda parte? xD Link to comment Share on other sites More sharing options...
susodicho Posted December 19, 2013 Report Share Posted December 19, 2013 [hide]Si usas un DataGridView para mostrar los resultados de una búsqueda, puedes permitir que el usuario modifique los valores de las casillas en el propio DataGridView y, de ser necesario, puedes especificar que algunas columnas sean de sólo lectura. También deberías desactivar la opción de agregar filas a la tabla.La idea es más o menos así: En el siguiente ejemplo en ninguna parte se llama al método LlenarDataGridView, así que tienes que agregar esa parte. Por si acaso, a LlenarDataGridView le pasas la cadena con la consulta SQL que quieres usar para llenar el DataGridView, pero si por razones de seguridad necesitas usar un SqlCommand en vez de una cadena, entonces puedes usar esta sobrecarga del constructor de SqlDataAdapter y hacer las respectivas modificaciones a LlenarDataGridView. Private fuenteDatos As New BindingSource() Private adaptadorDatos As New SqlDataAdapter() Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load DataGridView1.DataSource = fuenteDatos btnGuardar.Enabled = False End Sub Private Sub LlenarDataGridView(ByVal consulta As String) Try cn.Open() adaptadorDatos = New SqlDataAdapter(consulta, cn) Dim cmdBuilder As New SqlCommandBuilder(adaptadorDatos) Dim tabla As New DataTable() adaptadorDatos.Fill(tabla) fuenteDatos.DataSource = tabla DataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader) Catch exp As Exception MessageBox.Show(exp.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) Finally cn.Close() End Try End Sub Private Sub btnGuardar_Click(sender As System.Object, e As System.EventArgs) Handles btnGuardar.Click If Not fuenteDatos.DataSource Is Nothing Then adaptadorDatos.Update(CType(fuenteDatos.DataSource, DataTable)) End If End Sub Private Sub btnCancelar_Click(sender As System.Object, e As System.EventArgs) Handles btnCancelar.Click Me.Close() End Sub Private Sub DataGridView1_CellValueChanged(sender As System.Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged btnGuardar.Enabled = True End SubSe supone que la variable cn es de tipo SqlConnection. Quizás también te interese el evento CellValidating.[/hide] Link to comment Share on other sites More sharing options...
ExtreemD4t4 Posted December 21, 2013 Author Report Share Posted December 21, 2013 Genial!, otra duda..tengo una opcion que permite activar el login de usuario dentro del formulario principal, y tengo un formulario para el login, el proyecto parte con el menu principal y dentro está la opcion para activar o desactivar el login como se puede hacer para que al activar el login, el programa parta con el form de login? en vez del con menu principal? Link to comment Share on other sites More sharing options...
susodicho Posted December 22, 2013 Report Share Posted December 22, 2013 (edited) :mmm:[hide]ACLARACIÓN: Por lo que entiendo, tú necesitas que se muestre el formulario de login antes de mostrarse cualquier otro formulario, y una vez que el usuario haya sido validado, recién entonces mostrar el formulario principal.Yo lo hice usando un formulario propio, pero supongo que también debería funcionar con el Formulario de inicio de sesión que se incluye en el Visual Studio. El formulario para iniciar sesión que usé como ejemplo se ve así: Y el código fuente es:Public Class FormLogin Private _LoginExitoso As Boolean = False Friend ReadOnly Property LoginExitoso As Boolean Get Return _LoginExitoso End Get End Property Private Sub btnDentrar_Click(sender As System.Object, e As System.EventArgs) Handles btnDentrar.Click If txtUsuario.Text = "jefe" And txtPassword.Text = "clave" Then _LoginExitoso = True Me.Close() Else txtPassword.Text = "" MessageBox.Show("No te conozco", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) End If End Sub Private Sub btnSalir_Click(sender As System.Object, e As System.EventArgs) Handles btnSalir.Click Me.Close() End Sub End ClassObviamente, tú tienes que hacer una validación de verdad del usuario (la del ejemplo es entera mula :tonto: ). Además deberías hacer que el formulario quede centrado en la pantalla y asignar las propiedades AcceptButton y CancelButton a los respectivos botones del formulario. Para poder elegir qué formulario quieres cargar al momento de iniciar la aplicación, tienes que agregar un módulo a tu proyecto:Proyecto > Agregar módulo...Lo guardas con el nombre que se te antojeEste nuevo módulo debe verse más o menos así:Module ModuloInicial <STAThread()> Friend Sub Main() Application.EnableVisualStyles() Application.SetCompatibleTextRenderingDefault(False) Dim ingresar As Boolean = True If System.IO.File.Exists("login.txt") Then Dim frm As New FormLogin() Application.Run(frm) ingresar = frm.LoginExitoso End If If ingresar Then Application.Run(New Form1()) End If End Sub End ModuleOjo, este es un ejemplo burdo, se basa en la existencia de un archivo para saber si hay que mostrar el formulario de inicio de sesión (¡no se te ocurra hacerlo así! :tonto: ). Ahora necesitas indicarle a Visual Studio que no quieres usar un formulario principal, sino que quieres especificar un punto de entrada a tu aplicación. Para eso tienes que modificar las propiedades de tu proyecto: en el menú Proyecto selecciona Propiedades de <nombre_de_tu_proyecto>...:Selecciona la pestaña AplicaciónDesactiva la casilla que dice Habilitar marco de trabajo de la aplicaciónAl descativar esta casilla, la lista desplegable Formulario de inicio pasa a llamarse Objeto de inicio, en ésta selecciona Sub Maincon esto logras que tu aplicación ejecute el Sub Main que está en el módulo que agregaste previamente (y éste es el que se encarga de decidir qué formulario se carga al inicio de la aplicación).[/hide] Edited December 22, 2013 by susodicho Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now