Principales respuestas
Archivo en fileupload se guarda en bd de manera incorrecta

Pregunta
-
En mi formulario tengo 2 fileupload donde guardo mis archivos segun el mes , cuando yo guardo los 2 archivos en los meses respectivos estos se almacenan en mi bd de manera correcta (archivo1=mes1,archivo2=mes2) . Pero cuando solo guardo el archivo en el segundo mes .. este me guarda en el primer mes pero no en el segundo mes... Como puedo hacer para que mi archivo ya sea que este en el segundo o tercer mes.. se guarde en el mes correcto y no en el primer mes...
Protected Sub btnUpload_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnupload.Click Dim fechaini As Date = DateTime.Parse(lblini.Text) Dim fechafin As Date = DateTime.Parse(lblfin.Text) Dim cmeses2 = MonthDifference(fechafin, fechaini) For i As Integer = 1 To cmeses2 For Each item As RepeaterItem In rpt.Items Dim filemen As FileUpload = DirectCast(item.FindControl("FileUpload1"), FileUpload) If filemen.HasFile Then Dim Extension As String Extension = System.IO.Path.GetExtension(filemen.FileName) If Extension.ToLower <> ".gif" And Extension.ToLower <> ".png" And Extension.ToLower <> ".jpg" And Extension.ToLower <> ".jpeg" And Extension.ToLower <> ".pdf" Then ScriptManager.RegisterStartupScript(Me, Me.GetType(), "popup", "alert('Formato de archivo invalido, suba archivos con formato PDF o imagen')", True) Else Dim FileSize As Integer FileSize = filemen.PostedFile.ContentLength If FileSize > 3145728 Then ScriptManager.RegisterStartupScript(Me, Me.GetType(), "popup", "alert('El tamaño maximo de archivo a subir es de 3 Mb')", True) Else Dim indicador As New List(Of RowData) indicador.Add(New RowData() With {.Seq = i}) Dim tiposeguimientom As String Dim annomes As String annomes = Date.Now.ToString("yyyyMM") Dim filename As String = annomes + "_" + lblescuela.Text + "_" + lblidpractica.Text + "_" + "FM" + i.ToString + Extension Dim filename1 As String = annomes + "_" + lblescuela.Text + "_" + lblidpractica.Text + "_" + "FM" + i.ToString filemen.SaveAs("\\192.168.1.206\docsopp$\FichaMensual\" & filename) If i > 5 Then tiposeguimientom = "0201-" + (i + 4).ToString Else tiposeguimientom = "0201-0" + (i + 4).ToString End If con.Open() Dim cmd As New SqlCommand("update [OPP].[tblSeguimiento] set nombreArchi=@Name,rutaArchi=@Path,fechaReDocu=@fecha where idPracti=@Codigo and idTiSegui= @idTiSegui ", con) cmd.Parameters.AddWithValue("@Codigo", lblidpractica.Text) cmd.Parameters.AddWithValue("@idTiSegui", tiposeguimientom) cmd.Parameters.AddWithValue("@Name", filename1) cmd.Parameters.AddWithValue("@Path", "\\192.168.1.206\docsopp$\FichaMensual\" + filename) cmd.Parameters.AddWithValue("@fecha", DateTime.Now) cmd.ExecuteNonQuery() con.Close() i = i + 1 End If End If Else End If Next Next Response.Redirect("~/Modalidades/Estado/EsFichaMensual.aspx") End Sub Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If Not IsPostBack Then leerdatossolicitud() leerescuela() leerfechas() Dim fechaini As Date = DateTime.Parse(lblini.Text) Dim fechafin As Date = DateTime.Parse(lblfin.Text) Dim cmeses = MonthDifference(fechafin, fechaini) Dim dataSource As New List(Of RowData) For I As Integer = 1 To cmeses dataSource.Add(New RowData() With {.Seq = I}) Next Me.rpt.DataSource = dataSource Me.rpt.DataBind() End Sub
codigo
<asp:Repeater ID="rpt" runat="server">
<HeaderTemplate>
<table>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td> <asp:Label ID="indice" runat="server" Text ='<%#Eval("Seq")%>' Width="10px"></asp:Label></td>
<td><asp:FileUpload ID="FileUpload1" runat="server" /> </td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table></FooterTemplate>
</asp:Repeater>- Editado fredsale viernes, 13 de marzo de 2015 15:43
Respuestas
-
Te muestra algún error en la consola del explorador. Revisa, puede ser error de javascript. Con F12 puedes abrir las herramientas del explorador (Chrome, Firefox, IE) para reivsar si manda alguna error.
Si la solución propuesta atendió su consulta no olvide marcarla como respuesta.
Saludos
- Marcado como respuesta fredsale viernes, 13 de marzo de 2015 19:34
Todas las respuestas
-
Hola.
Parece que el problema es el for que tienes antes de recorrer los elementos del repeater. Lo tienes de 1 a 2; entonces recorres el repeater dos veces y por eso se guarda el archivo cunado i = 1, y cuando es = 2.
Creo que deberías de poder identificar a que mes corresponde cada fileupload, puedes ponerle un identificador en la propiedad tooltip, y solo si corresponde al mes en cuestión lo guardo, sino es el mismo que no lo haga.
Espero que te ayude.
Saludos.
-
-
Hola
Si puedes agregarlo, porque el repeater hace iteraciones, puedes obtener el indice de esta manerea
<%# Container.ItemIndex + 1 %>
Así se lo puedes poner al ToolTip='<%# Container.ItemIndex + 1%>'. Y cada fileupload tendara un tooltip diferente.
-
hola
como asocias un archivo a un mes ? o es el concepto de secuencial el que marca el mes
en ese caso en la tabla tblSeguimiento deberias reflejar ese secuencial, osea debes persistirlo porque es parte de tu informacion
la posicion del registro no indica en que mes se asigno, porque podrias aplciar un ORDER BY en la query y tendria un problema
Dim query As String = "update [OPP].[tblSeguimiento] set Mes= @mes, nombreArchi=@Name,rutaArchi=@Path,fechaReDocu=@fecha where idPracti=@Codigo and idTiSegui= @idTiSegui " Dim cmd As New SqlCommand(, con) cmd.Parameters.AddWithValue("@mes", ...) //aqui el secuencial cmd.Parameters.AddWithValue("@Name", filename1) cmd.Parameters.AddWithValue("@Path", "\\192.168.1.206\docsopp$\FichaMensual\" + filename) cmd.Parameters.AddWithValue("@fecha", DateTime.Now) cmd.Parameters.AddWithValue("@Codigo", lblidpractica.Text) cmd.Parameters.AddWithValue("@idTiSegui", tiposeguimientom)
si registras el mes al mostrarlo podrias darle un orden a los datos por ese campo he insertar un registro con mes 2 sin que tengas el 1
en el codigo veo el UPDATE, pero el INSERT donde los realizas ?
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina -
Ya lo intente Norberto pero me sigue con lo mismo parece que no reconociera el tooltip...
Protected Sub btnUpload_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnupload.Click Dim fechaini As Date = DateTime.Parse(lblini.Text) Dim fechafin As Date = DateTime.Parse(lblfin.Text) Dim cmeses2 = MonthDifference(fechafin, fechaini) For i As Integer = 1 To cmeses2 For Each item As RepeaterItem In rpt.Items Dim filemen As FileUpload = DirectCast(item.FindControl("FileUpload1"), FileUpload) If filemen.HasFile Then Dim Extension As String Extension = System.IO.Path.GetExtension(filemen.FileName) If Extension.ToLower <> ".gif" And Extension.ToLower <> ".png" And Extension.ToLower <> ".jpg" And Extension.ToLower <> ".jpeg" And Extension.ToLower <> ".pdf" Then ScriptManager.RegisterStartupScript(Me, Me.GetType(), "popup", "alert('Formato de archivo invalido, suba archivos con formato PDF o imagen')", True) Else Dim FileSize As Integer FileSize = filemen.PostedFile.ContentLength If FileSize > 3145728 Then ScriptManager.RegisterStartupScript(Me, Me.GetType(), "popup", "alert('El tamaño maximo de archivo a subir es de 3 Mb')", True) Else Dim tiposeguimientom As String Dim annomes As String annomes = Date.Now.ToString("yyyyMM") Dim filename As String = annomes + "_" + lblescuela.Text + "_" + lblidpractica.Text + "_" + "FM" + i.ToString + Extension Dim filename1 As String = annomes + "_" + lblescuela.Text + "_" + lblidpractica.Text + "_" + "FM" + i.ToString filemen.SaveAs("\\192.168.1.206\docsopp$\FichaMensual\" & filename) If i > 5 Then tiposeguimientom = "0201-" + (i + 4).ToString Else tiposeguimientom = "0201-0" + (i + 4).ToString End If If filemen.ToolTip = i Then con.Open() Dim cmd As New SqlCommand("update [OPP].[tblSeguimiento] set nombreArchi=@Name,rutaArchi=@Path,fechaReDocu=@fecha where idPracti=@Codigo and idTiSegui= @idTiSegui ", con) cmd.Parameters.AddWithValue("@Codigo", lblidpractica.Text) cmd.Parameters.AddWithValue("@idTiSegui", tiposeguimientom) cmd.Parameters.AddWithValue("@Name", filename1) cmd.Parameters.AddWithValue("@Path", "\\192.168.1.206\docsopp$\FichaMensual\" + filename) cmd.Parameters.AddWithValue("@fecha", DateTime.Now) cmd.ExecuteNonQuery() con.Close() End If i = i + 1 End If End If Else End If Next Next Response.Redirect("~/Modalidades/Estado/EsFichaMensual.aspx") End Sub
<asp:Repeater ID="rpt" runat="server"> <HeaderTemplate> <table> </HeaderTemplate> <ItemTemplate> <tr> <td><asp:Label ID="indice" runat="server" Text ='<%#Eval("Seq")%>' Width="10px"></asp:Label> </td> <td><asp:FileUpload ID="FileUpload1" runat="server" ToolTip='<%# Container.ItemIndex + 1%>' /> </td> </tr> </ItemTemplate> <FooterTemplate> </table></FooterTemplate> </asp:Repeater>
-
No veo que compares el ToolTip con el indice del For. Debería de ser que filemen.HasFile and i = CType(filemen.ToolTip, Int)
Así solo entrará cuando tenga archivo y corresponda al mes según tu for. Intenta poner un punto de intrrupción en ese IF para ver si el toolTip trae valor y corresponde.
Saludos.
-
Tienes razon Norberto me desespere un poco ... ahora tengo esta duda porque a pesar que tengo validaciones sobre el tipo de archivo y tambien el tamaño de archivo a insertar en el fileupload... No me sale ningun error a la hora de insertar por ejemplo un archivo de formato .rar ... claro en realidad no lo llega a insertar pero tampoco me sale los avisos que tengo de validacion... y eso q ninguno de ellos esta comentado...
Protected Sub btnUpload_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnupload.Click Dim fechaini As Date = DateTime.Parse(lblini.Text) Dim fechafin As Date = DateTime.Parse(lblfin.Text) Dim cmeses2 = MonthDifference(fechafin, fechaini) For i As Integer = 1 To cmeses2 For Each item As RepeaterItem In rpt.Items Dim filemen As FileUpload = DirectCast(item.FindControl("FileUpload1"), FileUpload) If filemen.HasFile And i = CType(filemen.ToolTip, Integer) Then Dim Extension As String Extension = System.IO.Path.GetExtension(filemen.FileName) If Extension.ToLower <> ".gif" And Extension.ToLower <> ".png" And Extension.ToLower <> ".jpg" And Extension.ToLower <> ".jpeg" And Extension.ToLower <> ".pdf" Then ScriptManager.RegisterStartupScript(Me, Me.GetType(), "popup", "alert('Formato de archivo invalido, suba archivos con formato PDF o imagen')", True) Else Dim FileSize As Integer FileSize = filemen.PostedFile.ContentLength If FileSize > 3145728 Then ScriptManager.RegisterStartupScript(Me, Me.GetType(), "popup", "alert('El tamaño maximo de archivo a subir es de 3 Mb')", True) Else Dim tiposeguimientom As String Dim annomes As String annomes = Date.Now.ToString("yyyyMM") Dim filename As String = annomes + "_" + lblescuela.Text + "_" + lblidpractica.Text + "_" + "FM" + i.ToString + Extension Dim filename1 As String = annomes + "_" + lblescuela.Text + "_" + lblidpractica.Text + "_" + "FM" + i.ToString filemen.SaveAs("\\192.168.1.206\docsopp$\FichaMensual\" & filename) If i > 5 Then tiposeguimientom = "0201-" + (i + 4).ToString Else tiposeguimientom = "0201-0" + (i + 4).ToString End If con.Open() Dim cmd As New SqlCommand("update [OPP].[tblSeguimiento] set nombreArchi=@Name,rutaArchi=@Path,fechaReDocu=@fecha where idPracti=@Codigo and idTiSegui= @idTiSegui ", con) cmd.Parameters.AddWithValue("@Codigo", lblidpractica.Text) cmd.Parameters.AddWithValue("@idTiSegui", tiposeguimientom) cmd.Parameters.AddWithValue("@Name", filename1) cmd.Parameters.AddWithValue("@Path", "\\192.168.1.206\docsopp$\FichaMensual\" + filename) cmd.Parameters.AddWithValue("@fecha", DateTime.Now) cmd.ExecuteNonQuery() con.Close() i = i + 1 End If End If Else End If Next Next Response.Redirect("~/Modalidades/Estado/EsFichaMensual.aspx") End Sub
- Editado fredsale viernes, 13 de marzo de 2015 18:36
-
Te muestra algún error en la consola del explorador. Revisa, puede ser error de javascript. Con F12 puedes abrir las herramientas del explorador (Chrome, Firefox, IE) para reivsar si manda alguna error.
Si la solución propuesta atendió su consulta no olvide marcarla como respuesta.
Saludos
- Marcado como respuesta fredsale viernes, 13 de marzo de 2015 19:34