Buenas tengo una duda en cuanto a al realización de un contador alfanumérico incrementable en visual basic.net
alguna idea de como podría hacerse?
El formato del contador seria de la siguiente forma:
PRE-001/13/12/2016
Este es un simple contador numérico pero no puedo adaptarlo con otro tipo de datos como string, mejor dicho no tengo una idea de como hacerlo
en el evento load del form1
cada vez que se habra el programa automáticamente aumente en el numero de uno en uno y capture la fecha actual:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim con As Integer
Dim sufijo As String
Dim fecha As Date
sufijo= "PRE"
fecha = DateTime.Now.ToString("dd/MM/yyyy")
con = 0
con = con + 1
txtnumero.Text = sufijo+con+fecha
End Sub
Incluyendo la palabra PRE
al inicio, el numero del presupuesto generado (que es el que se va a incrementar de uno en uno) seguido de la fecha de creación es posible esto en vb.net
?
С этим кодом возможно производить такую цепь:
PRE-001 / 14/12/2016
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim con As Integer
Dim sufijo As String
Dim fecha As Date
sufijo = "PRE-"
fecha = DateTime.Now.ToString("dd/MM/yyyy")
con = 0
con = con + 1
Dim out As String = con.ToString("000")
txtNumero.Text = sufijo & out & "/" & fecha
End Sub
На основании твоей необходимости, я предлагаю, чтобы ты сохранял в app.config префикс и последующего, присоединяю тебя код примера для того, чтобы ты дал себе идею:
Нуждайся в том, чтобы добавить ссылку: System.Configuration
Imports System.Configuration
Код в form был бы:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Try
Dim prefijo, consecutivo As String
prefijo = LeerAppConfig("prefijo")
consecutivo = LeerAppConfig("consecutivo")
Dim cons As Integer = Integer.Parse(IIf(consecutivo = "", "0", consecutivo))
cons = cons + 1
txtFolio.Text = prefijo + "-" + cons.ToString("000") + "/" + DateTime.Now.ToString("dd/MM/yyyy")
''Guardo en app.config
GuardarAppConfig("consecutivo",cons)
Catch ex As Exception
MessageBox.Show(ex.ToString())
End Try
End Sub
private function LeerAppConfig(key As String) as string
Dim result As String = ""
Try
Dim appSettings = ConfigurationManager.AppSettings
result= appSettings(key)
If IsNothing(result) Then
result = "Not found"
End If
Catch e As ConfigurationErrorsException
Console.WriteLine("Error reading app settings")
End Try
return result
End function
private sub GuardarAppConfig(key As String, value As String)
Try
Dim configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
Dim settings = configFile.AppSettings.Settings
If IsNothing(settings(key)) Then
settings.Add(key, value)
Else
settings(key).Value = value
End If
configFile.Save(ConfigurationSaveMode.Modified)
ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name)
Catch e As ConfigurationErrorsException
Console.WriteLine("Error writing app settings")
End Try
End sub
и твой файл app.config
он остался бы следующего способа:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<appSettings>
<add key="prefijo" value="PRE" />
<add key="consecutivo" value="0" />
</appSettings>
</configuration>
Я присоединяю изображения:
Хороший твоя идея не кажется очень сложной, но немного смущена. Сначала счетчик ты был бы должен сохранять это в каком-то месте (Например: база данных, текстовые файлы, книги Excell, и т.д.), или если не необходимо, чтобы ты это сохранял хорошо, ты должен хранить это в переменной с большей областью. А именно, поскольку ты пишешь, кажется, что ты думаешь закрывать формуляр и это открывать произвел бы новый счетчик, если это такое, ты мог бы создавать Модуль и там переменная, которую назывались бы счетчик, и потом ты увеличиваешь ее соглашаясь на нее каждый раз, когда это тебе показалось подходящим.
Возможно ты мог бы объяснять немного больше тему и так мочь помогать тебе с большей точностью.