renombrar archivos

mike_chief
20 de Marzo del 2005
Hola!
Quisiera saber como renombrar un archivo de base de datos "Data.mdb" con un nombre como variable que sea introducido en un textbox.

. : AlphaSoft : .
20 de Marzo del 2005
No te entiendo muy bien, podrias explicar mejor?...

Saludos!

. : AlphaSoft : .

mike_chief
20 de Marzo del 2005
Perdón, no me di a entender muy bien. Lo que quiero hacer es que un archivo x, le pueda yo cambiar el nombre, pero desde mi formulario de visual basic. Por ejemplo: Creo un textbox en mi formulario, y cuando ejecute mi programa, quiero que el texto que escirban dentro del formulario, modifique el nombre de un archivo; osea, escribo dentro del etxtbox "Perro" y el programa me cambie el nombre del archivo original a "perro". Si me di a entender esta vez??

alphasoft
20 de Marzo del 2005
O.K.

Ahora si *)

'---------------------------------------------------------------------
private sub TextBox_Change()

Renombrar NombreActual, Textbox.text

end sub

Public Sub Renombrar(Actual as string, Nuevo as string)

Replace$(Actual , Actual , Nuevo )

end sub

'-------------------------------------------------------------------------

Espero que te sirva... Saludos!

. : AlphaSoft : .

mike_chief
20 de Marzo del 2005
Hola:
De antemano, gracias por tu respuesta. Pero hay algo que no especifiqué bien: a lo que yo me refiero es lo siguiente : Desde mi formulario voy introducir un nombre en el textbox, cuando de click sobre un boton (en este caso command1) quiero que un archivo que esta en el disco duro que se llama "Data.mdb", me lo renombre así "<<cadenatextbox>>.mdb", donde cadenatextbox es un nombre que fué introducido por un usuario en el textbox. El objetivo del formulario es cambiarle el nombre a un archivo, pero un nombre asgando por un usuario mediante un textbox.

. : AlphaSoft : .
20 de Marzo del 2005
Hermano, eso es presisamente lo que hace el codigo!

Solo hay que modificarlo poquito:

---------------------------------------------------------------------
Dim sRuta as string

private sub Command1_Click()

Renombrar NombreActual, Textbox.text

end sub

Public Sub Renombrar(Actual as string, Nuevo as string)

sRuta = RutaDeArchivo
'Nota: solo la ruta ( pej. C: ) sin el nombre

Replace$(sRuta & Actual , sRuta & Actual , sRuta & Nuevo & ".mdb)

end sub

'-------------------------------------------------------------------------
El usuario debera escribir solo el nombre del archivo, sin extencion, puesto que el codigo se la asigna automaticamente.

A la funcion debes pasarle la ruta del archivo ( sin el nombre) y el valor de TextBox como el nuevo nombre.

Espero que ahora si nos entendamos...
Saludos

. : AlphaSoft : .

mike_chief
20 de Marzo del 2005
listo, ya lo puse a funcionar, pero me marca un error de sintaxis en el Public Sub, en la línea de Replace $(....). Quite parentesis, sí corre, pero no reemplaza el nombre. ¿qué puede ser?

. : AlphaSoft : .
20 de Marzo del 2005
O.K.

Como le estas pasando el Nombre Actual del archivo?

Deberia de ser por ejemplo Actual.mdb o Datos.mdb

Esta funcion reemplaza una cadena con otra para modificar el nombre del archivo... P. ej. si tienes un archivo " Datos.mdb " y quieres renombrarlo a " Nombres.mdb "

La cadena a reemplazar seria "Datos" y la cadena que se queda en lugar de datos deberia ser "Nombres".

Intenta pasarle el nombre actual del archivo completo:

Datos.mdb.

Si no funciona, intenta buscar en la MSDN una api para renombrar archivos, creo que seia mas faci asi.

Saludos!

. : AlphaSoft : .

mike_chief
20 de Marzo del 2005
GRacias de nuevo!!!
Esta es la idea, tal vez estoy haciendo algo que nada que ver... Estoy diseñando un formulario para un sistema de facturación interno. Lo que quiero que haga este frmulario es lo siguiente : La carpeta raiz es "C:\system" y dentro de esta, existe otra que se llama "S_files". Dentro de esta carpeta, tengo una base de datos en blanco de access(Data.mdb), unicamente tiene lo que son campos, pero no hay datos en ella. Entonces, quiero que con el Command1, copie "data.mdb" de "c:\system\s_files" a "c:\system\dbclliente\" (eso yo lo solucioné con el Filecopy). Y después, con la cadena que sea introducida en textbox1, cambie el nombre de "data.mdb" a ">>cadena del textbox<<.mdb". Con esto, quiero lograr que se "crée" una base de datos por cada cliente nuevo que se introduzca. Se puede decir que data.mdb es solo una plantilla que con el command1 se tranforma en "una base de datos indiviual" cuyo nombre le puso el usuario del sistema. Este es el código que tengo actualmente:

Dim sruta As String
Public Sub Renombrar(Actual As String, Nuevo As String)

sruta = "c:\system\dbcliente"

Replace$ (sruta & Actual, sruta & Actual, sruta & Nuevo & ".mdb")

End Sub



Private Sub Command1_Click()
Dim origen As String
Dim destino As String
n = MsgBox("Esta a punto e crear un nuevo cliente, ¿esta seguro?", vbOKCancel + vbQuestion, "Nuevo")
If n = vbOK Then
origen = "c:\system\s_files\data1.mdb"
destino = "c:\system\dbcliente\data1.mdb"
FileCopy origen, destino
Renombrar "c:\system\dbcliente\Data1", textbox.Text
End If
End Sub


intenté quitando la ruta donde uso la funcion de "renombrar" y en lugar de "c:\system\dcliente\data1" quedara sólo "data1". También intenté escribiendoles la extensión, pero no corre, y el area de replace$ (....) me maca error de sintaxis; Y si coloco replace$ ..... no hace nada.

en?
20 de Marzo del 2005
Con la función Replace no se realiza ninguna operación sobre el sistema de ficheros, sólo opera sobre Strings. El valor devuelto por Replace debe asignarse a una variable String.

Para cambiar el nombre de un fichero se usa la instrucción "Name FicheroAntiguo" As "FicheroNuevo"
Pero ya que usas FileCopy, puedes cambiarle el nombre directamente:

...
origen = "c:systems_filesdata1.mdb"
destino = "c:systemdbcliente"
FileCopy origen, destino & TextBox.Tex & "mdb"
End If

__
Un saludo.

alphasoft
20 de Marzo del 2005
O.k

Replace me funciona a mi, tengo un explorador que entre sus tantas funciones tiene la de renombrar archivos, y Replace$ es la que uso y trabaja bien.

En cuanto lo de el CopyFile, te agradecemos muchisimo, ciertamente ( le decia ) que usara el API, pero grasias ati ya me puedo ir a descansar.

Bye Miki!, Bye Enco! Nos escribimos!

. : AlphaSoft : .

mike_chief
20 de Marzo del 2005
no se de donde diablos puso esta m@dre tantas , yo no las puse así ...

alphasoft
20 de Marzo del 2005
Fijate que chiquito es el mundo! ya te iba a derci que ese era el error!

alphasoft
20 de Marzo del 2005
Disculpa he olvidado decirte:

Replace$ V1, V2, V3

V1 La ruta actual ( con nompre y ext )
V2 Palabra a buscar y reemplazar ( en tu caso "Datos")
V3 Palabra que sustituira a V2

Respecto a lo del error:

Si, y es que cuando es una funcion, casi siempre va en parentesis, porque una funcion casi siempre devuelve un resultado a una variable, en este caso no es ni funcion ni devuelve nada, Beredicto: la Ca@$! al escribirla... : )

Saludos!

. : AlphaSoft : .