Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

evitar sobreescribir un archivo en el commondialog

Estas en el tema de evitar sobreescribir un archivo en el commondialog en el foro de Visual Basic clásico en Foros del Web. Hola Estoy programando el Common dialog de Guardar Como... yo quiero hacer que cuando vaya a guardar un archivo con nombre igual a cualquiera que ...
  #1 (permalink)  
Antiguo 25/02/2009, 13:10
 
Fecha de Ingreso: enero-2009
Mensajes: 38
Antigüedad: 15 años, 3 meses
Puntos: 0
Pregunta evitar sobreescribir un archivo en el commondialog

Hola

Estoy programando el Common dialog de Guardar Como... yo quiero hacer que cuando vaya a guardar un archivo con nombre igual a cualquiera que este en la carpeta me diga un mensaje "Ya existe un archivo con el mismo nombre ¿Desea sobreescribirlo?"
También tengo otra pregunta del common dialog pero de Abrir Archivo... trato de abrir un archivo xml en el internet explorer a través de la Shellexecute, el código esta abajo. El problemilla que tengo es que tengo que indicar la ruta y el nombre de archivo por separado y el filename me trae todo completo lo que quiero es separar la ruta del nombre de archivo para pasarselo a la funcion shellexecute

'Abrimos el archivo con la sentencia InPut, pasandole la ruta con la propiedad FileName del Commondialog
Open CommonDialog1.FileName For Input As #1
ruta = CommonDialog1.FileName
Close #1
'llamamos a una funcion api para abrir el archivo en el Internet Explorer
ShellExecute Me.hwnd, "open", "archivo", "", "ruta", 0
  #2 (permalink)  
Antiguo 26/02/2009, 02:43
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: evitar sobreescribir un archivo en el commondialog

Hola, contesto al revés.

Para sacar por separado la ruta y el archivo:

Dim sRuta As String, sArchivo As String
sRuta = Left(CommonDialog1.FileName, InStrRev(CommonDialog1.FileName, "\", , vbTextCompare))
sArchivo = CommonDialog1.FileTitle


Para comprobar si el archivo existe en la carpeta, podrías crear una función como esta:

Código:
Private Function BuscaArchivo(sRuta As String, sArchivo As String) As Boolean
Dim s As String
s = Dir(sRuta & "\*.*")
Do While s <> ""
    If s = sArchivo Then
        BuscaArchivo = True
        Exit Do
    End If
    s = Dir
Loop
End Function
y para llamarla:

If BuscaArchivo(sRuta, sArchivo) = True Then
MsgBox "El archivo ya existe, ¿Sobreescribirlo?"
' ....
End If


  #3 (permalink)  
Antiguo 26/02/2009, 13:03
 
Fecha de Ingreso: enero-2009
Mensajes: 38
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: evitar sobreescribir un archivo en el commondialog

Muchas gracias Avellaneda la primera parte si me funciona, me divide la ruta y el archivo, pero no me abre el documento la shellexecute.

ShellExecute Me.hwnd, "open", "archivo", "", "ruta", 0
  #4 (permalink)  
Antiguo 26/02/2009, 13:39
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: evitar sobreescribir un archivo en el commondialog

Cita:
Iniciado por Rossanalie Ver Mensaje
Muchas gracias Avellaneda la primera parte si me funciona, me divide la ruta y el archivo, pero no me abre el documento la shellexecute.

ShellExecute Me.hwnd, "open", "archivo", "", "ruta", 0
Dos observaciones:

A la variable 'archivo' quítale las comillas y el último parámetro ponle 1

ShellExecute Me.hwnd, "Open", sArchivo, "", "sRuta", 1

  #5 (permalink)  
Antiguo 26/02/2009, 14:06
 
Fecha de Ingreso: enero-2009
Mensajes: 38
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: evitar sobreescribir un archivo en el commondialog

Ahora si me funciona, abre el archivo xml con el xmleditor, muchas gracias. Seguiré con la funcion de Guardar como...
  #6 (permalink)  
Antiguo 26/02/2009, 14:46
 
Fecha de Ingreso: enero-2009
Mensajes: 38
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: evitar sobreescribir un archivo en el commondialog

Hola

Tengo otro problemilla con Guardar Como... El problema es que si coloco un archivo que no está en la carpeta igualmente me envía el mensaje ¿Desea sobreescribirlo? El código completo es éste:

Dim ruta As String
Dim archivo As String

If SSTab1 = 0 Then
'abrimos el cuadro de dialogo de guardar archivo
CommonDialog1.ShowSave

If CommonDialog1.FileTitle = "" Then
MsgBox "Debe escribir el nombre de archivo a guardar", vbInformation, "Error"
'Salimos de la rutina ya que no hay nada que guardar
Exit Sub
Else
'Creamos un archivo con la sentencia OutPut, pasandole la ruta con la propiedad FileName del Commondialog
Open CommonDialog1.FileName For Output As #1
rutacompleta = CommonDialog1.FileName
'Escribimos en el archivo el contenido del Text1
Print #1, Text1
'Cerramos el archivo
Close #1

ruta = Left(CommonDialog1.FileName, InStrRev(CommonDialog1.FileName, "\", , vbTextCompare))
archivo = CommonDialog1.FileTitle
If BuscaArchivo(ruta, archivo) = True Then
rpta = MsgBox("El archivo ya existe, ¿Sobreescribirlo?", vbYesNo, "Advertencia")
End If

If rpta = vbYes Then
'Module2.conexionBD
'sql = "SELECT * FROM RETENCION WHERE periodo_mes = " & Combo1(0) & " and periodo_año = " & Combo2(0) & " and declaracion = 'primera'"
'Set rs = con.Execute(sql)

'If rs.EOF = True And rs.BOF = True Then

'Else
'Do While rs.EOF = False
'rs.MoveFirst
'mes = rs.Fields("periodo_mes").Value
'año = rs.Fields("periodo_año").Value
'rif = rs.Fields("rif_contribuyente").Value
'factura = rs.Fields("n_factura").Value
'Control = rs.Fields("n_control").Value
'monto = rs.Fields("monto_retencion").Value
'porcentaje = rs.Fields("porcentaje").Value

'abrimos el archivo con FSO para escribir el documento xml
Set FSO = CreateObject("Scripting.FileSystemObject")
Set ofich = FSO.CreateTextFile(rutacompleta, True)

variable = "<?xml version =" & Chr(34) & "1.0" & Chr(34) & " encoding =" & Chr(34) & "utf-8" & Chr(34) & "?>"
ofich.writeline (variable)
ofich.writeline ("<RelacionRetencionesISRL RifAgente=" & Chr(34) & "J002938897" & Chr(34) & " Periodo=" & Chr(34) & "AAAAMM" & Chr(34) & ">")
ofich.writeline ("<DetalleRetencion>")
ofich.writeline ("<RifRetenido>m98</RifRetenido>")
ofich.writeline ("<NumeroFactura>mmm</NumeroFactura>")
ofich.writeline ("<NumeroControl>mmm</NumeroControl>")
ofich.writeline ("<CodigoConcepto>mmm</CodigoConcepto>")
ofich.writeline ("<MontoOperacion>mmm</MontoOperacion>")
ofich.writeline ("<PorcentajeRetencion>mmm</PorcentajeRetencion>")
ofich.writeline ("</DetalleRetencion>")
ofich.writeline ("</RelacionRetencionesISRL>")
ofich.Close
Set ofich = Nothing
'rs.MoveNext
'Loop
'rs = Nothing
'End If
Else
Exit Sub
End If
End If
End If
  #7 (permalink)  
Antiguo 27/02/2009, 02:14
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: evitar sobreescribir un archivo en el commondialog

Cita:
Iniciado por Rossanalie Ver Mensaje
Hola

Tengo otro problemilla con Guardar Como... El problema es que si coloco un archivo que no está en la carpeta igualmente me envía el mensaje ¿Desea sobreescribirlo? ...
..
Hola, siempre encuentra el archivo porque lo estás creando antes de hacer la búsqueda:

Open CommonDialog1.FileName For Output As #1
Ten en cuenta que al abrir un archivo secuencial con la instrucción Output, si el archivo no existe, lo crea.

Debes abrirlo (crearlo) después de la instrucción
If rpta = vbYes Then
Open...


Saludos
  #8 (permalink)  
Antiguo 27/02/2009, 10:18
 
Fecha de Ingreso: enero-2009
Mensajes: 38
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: evitar sobreescribir un archivo en el commondialog

Ahora si está perfecto, muchas gracias a Avellaneda por su ayuda
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 21:11.