Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde precisava de uma ajuda se me pode ser facultada, estou usando o visual studio e programando para mobilidade sobre windows mobile 5.0 o que estou fazendo é apenas preencher um form e depois com os dados preenchidos nesse formulario gerar um xml isso ai eu consigo mas quero por exemplo que o primeiro formulario se chame LinhasCampo1.xml depois ao inserir mais dados no fomr crie outro ficheiro LinhasCampo2.xml ate aqui eu consigo mas quando eu vou inserir mais dados numa 3 etapa ele escreve esses dados em cima do LinhasCampo2.xml e eu pretendia que criasse um LinhasCampo3.xml passo a mostrar o codigo e agradecia ajuda por favor,
sem mais assunto e agradecendo desde ja
Private Sub Button2_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim i As Integer
i = 1
Dim nomexml As String
Dim n As Integer
n = 5
'nomexml = "\My Documents\LinhasCampo.xml"
nomexml = "\My Documents\LinhasCampo.xml"
' For i = 1 To n
If Not File.Exists(nomexml) Then
Dim writer As New XmlTextWriter(nomexml, Nothing)
writer.WriteStartDocument()
writer.Formatting = Formatting.Indented
writer.WriteStartElement("Linhas")
writer.WriteStartElement("Linha")
writer.WriteElementString("Prop_id", Me.TextBoxProp.Text)
writer.WriteElementString("Sector", Me.Cb3.SelectedValue)
writer.WriteElementString("Linha", Me._wtxtWrite.Text)
writer.WriteElementString("Arvore", Me.TextBoxQtArvores.Text)
writer.WriteElementString("TipoPlanta", Me.cbtipoplanta.SelectedValue)
writer.WriteElementString("Ano", Me.TextBoxAno.Text)
writer.WriteElementString("VariedadePE", Me.CbVPE.SelectedValue)
writer.WriteElementString("AnoEnx", Me.Tbanoenx.Text)
writer.WriteElementString("MesEnx", Me.TextBoxmesenx.Text)
writer.WriteElementString("Variedade", Me.CbVariedade.SelectedValue)
writer.WriteElementString("Cor", Me.cbcor.SelectedValue)
writer.WriteEndElement()
'escreve alguns espaços entre os nodes
writer.WriteWhitespace("" & Chr(10) & "")
writer.WriteFullEndElement()
'escreve o XML para o arquivo e fecha o escritor
writer.Close()
MsgBox("Arquivo XML gerado com sucesso.")
Else
'Dim nomexml As String
nomexml = "\My Documents\LinhasCampo" & i & ".xml"
Dim writer As New XmlTextWriter(nomexml, Nothing)
writer.WriteStartDocument()
writer.Formatting = Formatting.Indented
writer.WriteStartElement("Linhas")
writer.WriteStartElement("Linha")
writer.WriteElementString("Prop_id", Me.TextBoxProp.Text)
writer.WriteElementString("Sector", Me.Cb3.SelectedValue)
writer.WriteElementString("Linha", Me._wtxtWrite.Text)
writer.WriteElementString("Arvore", Me.TextBoxQtArvores.Text)
writer.WriteElementString("TipoPlanta", Me.cbtipoplanta.SelectedValue)
writer.WriteElementString("Ano", Me.TextBoxAno.Text)
writer.WriteElementString("VariedadePE", Me.CbVPE.SelectedValue)
writer.WriteElementString("AnoEnx", Me.Tbanoenx.Text)
writer.WriteElementString("MesEnx", Me.TextBoxmesenx.Text)
writer.WriteElementString("Variedade", Me.CbVariedade.SelectedValue)
writer.WriteElementString("Cor", Me.cbcor.SelectedValue)
writer.WriteEndElement()
writer.WriteWhitespace("" & Chr(10) & "")
writer.WriteFullEndElement()
writer.Close()
MsgBox("Arquivo XML gerado com sucesso.")
i = i + 1
End If
'Next
End Sub
Pois e como eu faço isso???desculpem mas nao entendo eu ja tentei utilizar um for mas comentei mesmo pq o resultado é o mesmo
Exemplo simples:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
EscreveXml(5)
End Sub
Protected Sub EscreveXml(ByVal Quant As Integer)
Dim i As Integer
For i = 0 To Quant
Response.Write("Nome do Xml é igual: Xml" & i & "<br />")
Next d
End SubObrigado pela ajuda de voces mas ate ao momento ja exprimentei no exemplo acima e nao funciona :(
O que não funcionou no exemplo acima??
Deu algum erro? Basta no lugar do Response.Write colocar seu código que escreve seu Xml.
Abraços...
Protected Sub EscreveXml(ByVal Quant As Integer)
Dim i As Integer
Dim nomexml As String
For i = 0 To Quant
nomexml = "\My Documents\LinhasCampo.xml"
If Not File.Exists(nomexml) Then
Dim writer As New XmlTextWriter(nomexml, Nothing)
writer.WriteStartDocument()
writer.Formatting = Formatting.Indented
writer.WriteStartElement("Linhas")
writer.WriteStartElement("Linha")
writer.WriteElementString("Prop_id", Me.TextBoxProp.Text)
writer.WriteElementString("Sector", Me.Cb3.SelectedValue)
writer.WriteElementString("Linha", Me._wtxtWrite.Text)
writer.WriteElementString("Arvore", Me.TextBoxQtArvores.Text)
writer.WriteElementString("TipoPlanta", Me.cbtipoplanta.SelectedValue)
writer.WriteElementString("Ano", Me.TextBoxAno.Text)
writer.WriteElementString("VariedadePE", Me.CbVPE.SelectedValue)
writer.WriteElementString("AnoEnx", Me.Tbanoenx.Text)
writer.WriteElementString("MesEnx", Me.TextBoxmesenx.Text)
writer.WriteElementString("Variedade", Me.CbVariedade.SelectedValue)
writer.WriteElementString("Cor", Me.cbcor.SelectedValue)
writer.WriteEndElement()
writer.WriteWhitespace("" & Chr(10) & "")
writer.WriteFullEndElement()
writer.Close()
MsgBox("Arquivo XML gerado com sucesso.")
Else
'For i = 1 To n
nomexml = "\My Documents\LinhasCampo" & i & ".xml"
Dim writer As New XmlTextWriter(nomexml, Nothing)
writer.WriteStartDocument()
writer.Formatting = Formatting.Indented
writer.WriteStartElement("Linhas")
writer.WriteStartElement("Linha")
writer.WriteElementString("Prop_id", Me.TextBoxProp.Text)
writer.WriteElementString("Sector", Me.Cb3.SelectedValue)
writer.WriteElementString("Linha", Me._wtxtWrite.Text)
writer.WriteElementString("Arvore", Me.TextBoxQtArvores.Text)
writer.WriteElementString("TipoPlanta", Me.cbtipoplanta.SelectedValue)
writer.WriteElementString("Ano", Me.TextBoxAno.Text)
writer.WriteElementString("VariedadePE", Me.CbVPE.SelectedValue)
writer.WriteElementString("AnoEnx", Me.Tbanoenx.Text)
writer.WriteElementString("MesEnx", Me.TextBoxmesenx.Text)
writer.WriteElementString("Variedade", Me.CbVariedade.SelectedValue)
writer.WriteElementString("Cor", Me.cbcor.SelectedValue)
writer.WriteEndElement()
writer.WriteWhitespace("" & Chr(10) & "")
writer.WriteFullEndElement()
writer.Close()
'maior = nomexml = "\My Documents\LinhasCampo" & i + 1 & ".xml"
MsgBox("Arquivo XML gerado com sucesso.")
' Next
' i = i + 1
End If
Next
End Sub
Eu tou a fazer assim e o q acontece é q ele escreve por exemplo 5 vezes ficehiros com o nome diferente tipo Linhascampo1.xml linhascampo2.xml ...etc mas com o mesmo conteudo e eu queria qd aparecesse a msgbox de arquivo escrito eu deposi digitasse outros valores no form mas que aparecesse o linhascampo2.xml depois dou ok e insiro outros valores no form e q me escrevesse o linhascampo3.xml fiz-me entender??
Nem agradeci a sua ajuda estou tao desesperado tentando fazer isso q acabei por me esquecer mas muito obrigado amigo
Hum... Agora entendi, é mais fácil do que imaginei, não precisará do for então.
Antes de eu postar o código em vão, sua aplicação é web??
Abraços...
Obrigado você é um amigo mesmo, relativamente a minha aplicação nao é uma aplicação para windows mobile 5.0
quis dizer q nao é uma aplicação web mas sim para windows mobile 5
Desculpem o incomodo agradecia que se alguem soubesse esta solução me ajudasse pois tinha urgencia de ter feito para amanha e ate agora ainda nao consegui
Fiz o seguinte teste e deu certo.
Imports System.Xml
Public Class Form1
Dim Cont As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Cont += 1
Dim writer As New XmlTextWriter("Xml" & Cont & ".xml", Nothing)
writer.WriteStartDocument()
writer.Formatting = Formatting.Indented
writer.WriteStartElement("Linhas")
writer.WriteStartElement("Linha")
writer.WriteElementString("Prop_id", "Prop_id")
writer.WriteElementString("Sector", "Sector")
writer.WriteEndElement()
'escreve alguns espaços entre os nodes
writer.WriteWhitespace("" & Chr(10) & "")
writer.WriteFullEndElement()
'escreve o XML para o arquivo e fecha o escritor
writer.Close()
MsgBox("Arquivo XML gerado com sucesso.")
End Sub
Abraços...
Muito obrigado Bruno voce é super legal segundo os testes que fiz esta a funcionar correctamente muito obrigado mesmo nao sei como lhe agradecer.
Abraços
So me falta um pequenino teste que é assim se eu tenho ja um ficheiro com esse nome no directorio entao cria outro com o i acima desse ou seja imaginemos que tenho la os seguintes ficheiros linhascampo1.xml, linhascampo2.xml, linhascampo3.xml entao o que ele vai fazer qd criar outra linha vai criar um linhascampo4.xml tou a tentar fazer isto do seguinte modo:
Dim i As Integer
Private Sub Button2_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
i += 1
Dim nomexml As String
Dim maior As String
Dim n As Integer
n = 5
If File.Exists("\My Documents\LinhasCampo" & i & ".xml") Then
'File.Create("\My Documents\LinhasCampo" & i + 1 & ".xml")
Dim writer As New XmlTextWriter("\My Documents\LinhasCampo" & i + 1 & ".xml", Nothing)
writer.WriteStartDocument()
writer.Formatting = Formatting.Indented
writer.WriteStartElement("Linhas")
writer.WriteStartElement("Linha")
writer.WriteElementString("Prop_id", Me.TextBoxProp.Text)
writer.WriteElementString("Sector", Me.Cb3.SelectedValue)
writer.WriteElementString("Linha", Me._wtxtWrite.Text)
writer.WriteElementString("Arvore", Me.TextBoxQtArvores.Text)
writer.WriteElementString("TipoPlanta", Me.cbtipoplanta.SelectedValue)
writer.WriteElementString("Ano", Me.TextBoxAno.Text)
writer.WriteElementString("VariedadePE", Me.CbVPE.SelectedValue)
writer.WriteElementString("AnoEnx", Me.Tbanoenx.Text)
writer.WriteElementString("MesEnx", Me.TextBoxmesenx.Text)
writer.WriteElementString("Variedade", Me.CbVariedade.SelectedValue)
writer.WriteElementString("Cor", Me.cbcor.SelectedValue)
writer.WriteEndElement()
writer.WriteWhitespace("" & Chr(10) & "")
writer.WriteFullEndElement()
writer.Close()
MsgBox("Arquivo XML gerado com sucesso.")
Else
Dim writer As New XmlTextWriter("\My Documents\LinhasCampo" & i & ".xml", Nothing)
writer.WriteStartDocument()
writer.Formatting = Formatting.Indented
writer.WriteStartElement("Linhas")
writer.WriteStartElement("Linha")
writer.WriteElementString("Prop_id", Me.TextBoxProp.Text)
writer.WriteElementString("Sector", Me.Cb3.SelectedValue)
writer.WriteElementString("Linha", Me._wtxtWrite.Text)
writer.WriteElementString("Arvore", Me.TextBoxQtArvores.Text)
writer.WriteElementString("TipoPlanta", Me.cbtipoplanta.SelectedValue)
writer.WriteElementString("Ano", Me.TextBoxAno.Text)
writer.WriteElementString("VariedadePE", Me.CbVPE.SelectedValue)
writer.WriteElementString("AnoEnx", Me.Tbanoenx.Text)
writer.WriteElementString("MesEnx", Me.TextBoxmesenx.Text)
writer.WriteElementString("Variedade", Me.CbVariedade.SelectedValue)
writer.WriteElementString("Cor", Me.cbcor.SelectedValue)
writer.WriteEndElement()
writer.WriteWhitespace("" & Chr(10) & "")
writer.WriteFullEndElement()
writer.Close()
'maior = nomexml = "\My Documents\LinhasCampo" & i + 1 & ".xml"
MsgBox("Arquivo XML gerado com sucesso.")
' Next
i = i + 1
End If
mas o que me acontece é que ele so faz o teste para o primeiro ou seja se existe um linhascampo1.xml e existe um linhascampo2.xml ele escreve em cima do linhascampo2.xml e depois escreve o linhascampo3.xml e eu pretendia como disse acima que ele verificasse no directorio se existe e começaria a escrever a partir do mais alto linhascampo&i&.xml, isto sera possivel fazer??
O mais correto seria fazer a verificação, ae depois chamar sua função separadamente que cria o Xml, mas uma forma fácil de fazer isso será.
Logo abaixo do seu primeiro IF:
If File.Exists("\My Documents\LinhasCampo" & i & ".xml") ThenChame o evento do próprio botão:
Button2_Click_1(sender, e)Desta forma, ele chamará o botão de novo e irá incrementar sua variável novamente, até achar um arquivo que não exista no servidor para criar.Seu código deve ficar da seguinte forma:
Dim i As Integer
Private Sub Button2_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
i += 1
Dim nomexml As String
Dim maior As String
Dim n As Integer
n = 5
If File.Exists("\My Documents\LinhasCampo" & i & ".xml") Then
Button2_Click_1(sender, e)
'File.Create("\My Documents\LinhasCampo" & i + 1 & ".xml")
Dim writer As New XmlTextWriter("\My Documents\LinhasCampo" & i + 1 & ".xml", Nothing)
writer.WriteStartDocument()
writer.Formatting = Formatting.Indented
writer.WriteStartElement("Linhas")
writer.WriteStartElement("Linha")
writer.WriteElementString("Prop_id", Me.TextBoxProp.Text)
writer.WriteElementString("Sector", Me.Cb3.SelectedValue)
writer.WriteElementString("Linha", Me._wtxtWrite.Text)
writer.WriteElementString("Arvore", Me.TextBoxQtArvores.Text)
writer.WriteElementString("TipoPlanta", Me.cbtipoplanta.SelectedValue)
writer.WriteElementString("Ano", Me.TextBoxAno.Text)
writer.WriteElementString("VariedadePE", Me.CbVPE.SelectedValue)
writer.WriteElementString("AnoEnx", Me.Tbanoenx.Text)
writer.WriteElementString("MesEnx", Me.TextBoxmesenx.Text)
writer.WriteElementString("Variedade", Me.CbVariedade.SelectedValue)
writer.WriteElementString("Cor", Me.cbcor.SelectedValue)
writer.WriteEndElement()
writer.WriteWhitespace("" & Chr(10) & "")
writer.WriteFullEndElement()
writer.Close()
MsgBox("Arquivo XML gerado com sucesso.")
Else
Dim writer As New XmlTextWriter("\My Documents\LinhasCampo" & i & ".xml", Nothing)
writer.WriteStartDocument()
writer.Formatting = Formatting.Indented
writer.WriteStartElement("Linhas")
writer.WriteStartElement("Linha")
writer.WriteElementString("Prop_id", Me.TextBoxProp.Text)
writer.WriteElementString("Sector", Me.Cb3.SelectedValue)
writer.WriteElementString("Linha", Me._wtxtWrite.Text)
writer.WriteElementString("Arvore", Me.TextBoxQtArvores.Text)
writer.WriteElementString("TipoPlanta", Me.cbtipoplanta.SelectedValue)
writer.WriteElementString("Ano", Me.TextBoxAno.Text)
writer.WriteElementString("VariedadePE", Me.CbVPE.SelectedValue)
writer.WriteElementString("AnoEnx", Me.Tbanoenx.Text)
writer.WriteElementString("MesEnx", Me.TextBoxmesenx.Text)
writer.WriteElementString("Variedade", Me.CbVariedade.SelectedValue)
writer.WriteElementString("Cor", Me.cbcor.SelectedValue)
writer.WriteEndElement()
writer.WriteWhitespace("" & Chr(10) & "")
writer.WriteFullEndElement()
writer.Close()
'maior = nomexml = "\My Documents\LinhasCampo" & i + 1 & ".xml"
MsgBox("Arquivo XML gerado com sucesso.")
' Next
i = i + 1
End If
Abraços...
Antes de mais fica mais um agradecimento pela sua ajuda e atenção Bruno exprimentei o seu exemplo e funciona legal 5 estrelas mesmo você é genial.
Como nao conseguia chegar a essa solução deixo outro codigo com o qual tb funciona ele criar um xml peladata de sistema ao segundo o qual será muito dificil o utilizador num segundo preencher o formulario todo e tb fica a funcionar segue codigo abaixo:
Private Sub Button2_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim nome As String
nome = "\My Documents\LinhasCampo" & Format(Now, "HHmmss") & ".xml"
Dim writer As New XmlTextWriter(nome, Nothing)
writer.WriteStartDocument()
writer.Formatting = Formatting.Indented
writer.WriteStartElement("Linhas")
writer.WriteStartElement("Linha")
writer.WriteElementString("Prop_id", Me.TextBoxProp.Text)
writer.WriteElementString("Sector", Me.Cb3.SelectedValue)
writer.WriteElementString("Linha", Me._wtxtWrite.Text)
writer.WriteElementString("Arvore", Me.TextBoxQtArvores.Text)
writer.WriteElementString("TipoPlanta", Me.cbtipoplanta.SelectedValue)
writer.WriteElementString("Ano", Me.TextBoxAno.Text)
writer.WriteElementString("VariedadePE", Me.CbVPE.SelectedValue)
writer.WriteElementString("AnoEnx", Me.Tbanoenx.Text)
writer.WriteElementString("MesEnx", Me.TextBoxmesenx.Text)
writer.WriteElementString("Variedade", Me.CbVariedade.SelectedValue)
writer.WriteElementString("Cor", Me.cbcor.SelectedValue)
writer.WriteEndElement()
writer.WriteWhitespace("" & Chr(10) & "")
writer.WriteFullEndElement()
writer.Close()
'maior = nomexml = "\My Documents\LinhasCampo" & i + 1 & ".xml"
MsgBox("Arquivo XML gerado com sucesso.")
' Next
' i = i + 1
'File.Create("\My Documents\LinhasCampo" & i + 1 & ".xml")
'Me._wlblInfos.Text = ""
'Me.TextBoxProp.Text = ""
''Me.Cb3.SelectedValue = ""
''Me._wtxtWrite.Text
'Me.TextBoxQtArvores.Text = ""
''Me.cbtipoplanta.SelectedValue
'Me.TextBoxAno.Text = ""
''Me.CbVPE.SelectedValue
'Me.Tbanoenx.Text = ""
'Me.TextBoxmesenx.Text = ""
' EscreveXml(5)
End Sub
talvez nao seja a melhor solução mas como nao vi logo o seu codigo Bruno foi a melhor solução que eu tinha.
No entao obrigado, e se tiver um tempinho como eu posso por exemplo guardar todos os valores que insiro nas textbox e combobox acima numa string?
A idéia será a mesma da variável integer, mas terá que ser uma variável string. E toda vez que você for alimentá-la basta pegar o valor antigo concatenado com o valor novo que foi preenchido no seu TextBox.
Abraços...
boa tarde obrigado mais uma vez bruno pela sua ajuda
Tópico resolvido??
Sim resolvido bruno desculpe a demora mas estive ausente abraço e mais uma vez um grande obrigado
Movido Plataforma .NET » Visual Studio .NET http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Plataforma .NET
Para fazer isso seu código deve estar dentro de um laço para sua variável i ser incrementada, reparei que tem um for comentado, terá que usar algo para fazer este laço.
Abraços...