
Duduh_Capixaba
Membros-
Total de itens
258 -
Registro em
-
Última visita
Tudo que Duduh_Capixaba postou
-
obrigado, deu certinho Kuroi :) vlw!!!
-
Olá pessoas! Vejam este código: Dim Con As New ADODB.Connection Dim TbCli As New ADODB.Recordset Dim StringConexao As String Private Sub Form_Load() StringConexao = "DSN=Visual_SIG;Driver=Firebird/InterBase(r) driver;" & _ "Dbname=C:\VSig\SgaIbLS.gdb;CHARSET=NONE;UID=SYSDBA;" Con.Open StringConexao End Sub Eu gostaria de colocar os dados da conexão dentro de um arquivo texto, onde eu poderia editar o caminho da base de dados a vontade, sem ter que abrir o código do programa a cada vez que eu mudar o nome da base de dados. Por exemplo: Private Sub Form_Load() StringConexao = C:\Pasta\ConfBase.txt Con.Open StringConexao End Sub Assim, se o nome da minha base de dados mudar, eu só teria que editar o nome dela dentro do arquivo ConfBase.txt. Alguém sabe como montar essa estrutura?
-
banco de dados com extensão exe? amigo, acho que você se confundiu... arquivos com extensão exe são executáveis, não banco de dados. refaça sua pergunta pro pessoal poder te ajudar. abraço!
-
Hum...é verdade Kuroi, se o cara nasceu em 29/02, no ano bissexto ele só faria aniversário no dia 29 (eu acho). Minha solução foi criar uma variável (BISSEXTO) que identificasse os anos bissextos, veja: Dim DtNasc As Date, DtAtual As Date Dim Bissexto As Date, Idade As Integer Bissexto = DateSerial(Year(Now), 2, 29) DtNasc = CDate(MaskEdBox1.Text) DtAtual = CDate(Date) 'Caso o mês do nascimento seja maior que o mês atual If Month(DtNasc) > Month(DtAtual) Then Idade = Year(DtAtual) - Year(DtNasc) - 1 'Caso o mês do nascimento seja igual ao mês atual ElseIf Month(DtNasc) = Month(DtAtual) Then If Day(DtNasc) = 29 And Month(DtNasc) = 2 And Day(DtAtual) >= 28 And Day(Bissexto) = 1 Then Idade = Year(DtAtual) - Year(DtNasc) ElseIf Day(DtNasc) > Day(DtAtual) Then Idade = Year(DtAtual) - Year(DtNasc) - 1 Else Idade = Year(DtAtual) - Year(DtNasc) End If 'Caso o mês do nascimento seja menor que o mês atual Else Idade = Year(DtAtual) - Year(DtNasc) End If If Idade < 0 Then Idade = 0 Text1.Text = Idade Se o valor do dia BISSEXTO for 29, então estamos em um ano bissexto, mas se for 01, é porque o ano não tem o dia 29. Sendo assim, a variável recebe o valor do próximo dia, no caso, 01/03. Refaça os testes.Creio que agora ficou certo. Vlw, abraço!
-
Instrução Sql - Tem Algo Errado?
pergunta respondeu ao Gabriel Cabral de Duduh_Capixaba em Visual Basic
Gabriel, infelizmente colocando dois ou mais comandos Filter em seqüência não dá certo. você vai ter que usar condições pra poder fazer como o Macêdo citou acima. Exemplo: você possui dois TextBox, um para Nome do Cliente, outro para Emissão. Condição_1) Se você preencher o nome do cliente mas não a emissão, então, o filtro conterá apenas o nome do cliente; Condição_2) Se você preencher a emissão mas não o nome do cliente, então, o filtro conterá apenas a data de emissão; Condição_3) Se você preencher as duas TextBox (Cliente e Emissão), então, o filtro conterá ambos os dados. Esse é um código que eu usei em um relatório meu, contendo dois DataCombo (Cliente e Operação) e dois MaskEdBox (Data Inicial e Final): Private Sub btnImprimir_Click() Dim Combo1 As String, Combo2 As String Dim Mask1 As String, SQL As String If cmbCodigo.Text <> "0" Then Combo1 = "CLIENTE = " & cmbCodigo SQL = Combo1 End If If cmbOperacao.Text <> "0" Then If Combo1 = "" Then Combo2 = "OPERACAO = " & cmbOperacao SQL = Combo2 Else Combo2 = " AND OPERACAO = " & cmbOperacao SQL = Combo1 + Combo2 End If End If If mskData1.Text <> "" Then If Combo1 = "" And Combo2 = "" Then Mask1 = "EMISSAO >= '" & mskData1 & "'" & " AND EMISSAO <= '" & mskData2 & "'" SQL = Mask1 Else Mask1 = " AND EMISSAO >= '" & mskData1 & "'" & " AND EMISSAO <= '" & mskData2 & "'" SQL = Combo1 + Combo2 + Mask1 End If End If deComercial.rscomVendas.Filter = SQL rptVendas.Show Eu fui montando o filtro com a variável SQL a cada condição que ela passava. Meio confuso, mas acho que deu pra entender, hehe... Macêdo, dei uma olhada na sua dica sobre DataReport, é mais ou menos isso que eu quero mesmo, ainda tenho que estudar melhor, fazer testes...mas já deu pra ver que é bem melhor que usar o comando FILTER. Vou dar uma olhada nesse post que você indicou tb. Vlw!!! -
Instrução Sql - Tem Algo Errado?
pergunta respondeu ao Gabriel Cabral de Duduh_Capixaba em Visual Basic
Esse erro geralmente acontece quando você tenta inserir um valor em uma variável que não aceita o valor inserido. Por exemplo, inserir uma letra em uma variável INTEGER. Lembre-se que as datas devem estar entre aspas simples ('01/01/2007') para serem aceitas pela sua variável. Eu te aconselho a tentar entrar com um valor que você tem certeza que irá funcionar, tipo: DataEnvironment1.rsCommand1.Filter = "Atend_NomeFantasia = 'NOME_FANTASIA_EXISTENTE_NA_TABELA'" rptAtendDataNome.Show E claro, lembre-se de mudar o comando "DataEnvironment1.rsCommand1.Filter" para os nomes que você deu para o seu DataEnvironment e para o seu Command. -
Instrução Sql - Tem Algo Errado?
pergunta respondeu ao Gabriel Cabral de Duduh_Capixaba em Visual Basic
Macêdo, estou a um tempo procurando um outro método de montar meus relatórios sem objetos vinculados (que eu acho muito limitado). Parece que você sabe como proceder. Você poderia explicar um pouco melhor isso que acabou de citar acima? Gostaria muito de poder usar esse método. Abraço! Primeiro, retire todas as condições WHERE da sua SQL. Para filtrar seu relatório você vai usar o comando FILTER, assim: DataEnvironment1.rsCommand1.Filter = "Atend_NomeFantasia = '" & Text1 & "'" rptAtendDataNome.Show Onde: "DataEnvironment1" é a sua conexão com o banco; "rsCommand1" é a sua instrução SQL e "Filter" é o filtro que você quer usar no relatório (substituindo a instrução WHERE da SQL). "Atend_NomeFantasia" é o campo da tabela e "Text1" é um objeto do Form. Espero ter ajudado. -
hum, falha nostra...correção: Dim DtNasc As Date, DtAtual As Date Dim Idade As Integer DtNasc = CDate(MaskEdBox1.Text) DtAtual = CDate(Date) If Month(DtNasc) > Month(DtAtual) Then Idade = Year(DtAtual) - Year(DtNasc) - 1 ElseIf Month(DtNasc) = Month(DtAtual) Then If Day(DtNasc) = 29 And Month(DtNasc) = 2 And Day(DtAtual) >= 28 Then Idade = Year(DtAtual) - Year(DtNasc) ElseIf Day(DtNasc) > Day(DtAtual) Then Idade = Year(DtAtual) - Year(DtNasc) - 1 Else Idade = Year(DtAtual) - Year(DtNasc) End If Else Idade = Year(DtAtual) - Year(DtNasc) End If If Idade < 0 Then Idade = 0 Text1.Text = Idade
-
Kuroi, confirmei com minha prima, ela foi registrada no dia 28/02. Segundo meu código, ela teria 5 anos no dia 28/02/2009 se tivesse nascido no dia 28/02/2004. Mas mesmo assim, fiz um código para o caso do dia 29/02: Dim DtNasc, DtAtual As Date Dim Idade As Integer DtNasc = CDate(MaskEdBox1.Text) DtAtual = CDate(Date) If Month(DtNasc) > Month(DtAtual) Then Idade = Year(DtAtual) - Year(DtNasc) - 1 ElseIf Month(DtNasc) = Month(DtAtual) Then If Day(DtNasc) = 29 And Month(DtNasc) = 2 Then Idade = Year(DtAtual) - Year(DtNasc) ElseIf Day(DtNasc) > Day(DtAtual) Then Idade = Year(DtAtual) - Year(DtNasc) - 1 Else Idade = Year(DtAtual) - Year(DtNasc) End If Else Idade = Year(DtAtual) - Year(DtNasc) End If If Idade < 0 Then Idade = 0 Text1.Text = Idade Testa aí e verifica se vai gerar algum erro. Aqui deu tudo certo, mas não testei todas as possibilidades ainda. Abraço!
-
Tenho uma prima que nasceu no dia 29/02, vou perguntar a ela como ela foi registrada. Mas tenho quase certeza que foi no dia 28. Sendo assim, a função funciona tranquilo, mas se for mesmo no dia 29, aí eu teria que acertar. Assim que der eu acerto, não é nada de tão difícil =] Vlw vlw!!!
-
beleza Kuroi, assim que der eu dou uma olhada nesse problema do dia 29 de fevereiro. Mas não tira sua função não cara, ela ficou muito 10! Fiquei impressionado com a complexidade do cálculo :P é loucura e ainda funciona 100%. Vlw, abraço! O código anterior possui um erro: hoje: 11/10/2007 nascimento: 16/12/2000 idade: 6 anos Se você colocar nascimento 01/12/2007 ele vai te dar 7 anos. Isso porque ele está dando prioridade para o dia, e não para o mês. Corrigindo o código: Dim DtNasc, DtAtual As Date Dim Idade As Single DtNasc = CDate(MaskEdBox1.Text) DtAtual = CDate(Date) If Month(DtNasc) > Month(DtAtual) Then Idade = Year(DtAtual) - Year(DtNasc) - 1 ElseIf Month(DtNasc) = Month(DtAtual) Then If Day(DtNasc) > Day(DtAtual) Then Idade = Year(DtAtual) - Year(DtNasc) - 1 Else Idade = Year(DtAtual) - Year(DtNasc) End If Else Idade = Year(DtAtual) - Year(DtNasc) End If If Idade < 0 Then Idade = 0 Text1.Text = Idade End Sub As condições são: 1) o mês de nascimento ser maior que o mês atual 2) o mês de nascimento ser igual ao mês atual mas o dia ser maior 3) o mês de nascimento ser igual ao mês atual mas o dia ser menor 4) o mês de nascimento ser menor que o mês atual
-
Kuroi, dei uma mexida no meu código, queria que você desse uma olhada: Private Sub MaskEdBox1_LostFocus() Dim DtNasc, DtAtual As Date Dim Idade As Single DtNasc = CDate(MaskEdBox1.Text) DtAtual = CDate(Date) If Day(DtNasc) > Day(DtAtual) And Month(DtNasc) >= Month(DtAtual) Then Idade = Year(DtAtual) - Year(DtNasc) - 1 Else Idade = Year(DtAtual) - Year(DtNasc) End If If Idade < 0 Then Idade = 0 Text1.Text = Idade End Sub Fiz vários testes e não encontrei erro. Gostaria que o pessoal testasse tb. Vlw, abraço!
-
nossa cara...minha lógica tá totalmente errada!!! na verdade eu consertei um erro e criei outro, hehe...melhor seguir o exemplo do link que você passou. vlw pela correção!
-
Macêdo, segui seu código, mas percebi que quando eu colocava uma data próxima a data atual o cálculo furava. Exemplo: hoje é dia: 08/10/2007 nascimento: 09/10/1983 idade: 23 Mas o programa me devolve 24. Entre os dias 09/10 e 14/10 ele faz isso, antes ou depois dessa data fica certo. Minha solução: Private Sub MaskEdBox1_LostFocus() Dim DtNasc, DtAtual As Date Dim Idade, Resto As Integer DtNasc = CDate(MaskEdBox1.Text) DtAtual = CDate(Date) Resto = (DtAtual - DtNasc) Mod 365 Idade = (DtAtual - DtNasc) \ 365 'Não é erro de digitação, é uma barra invertida mesmo! If Resto >= 0 And Resto <= 5 Then Text1.Text = Idade - 1 Else Text1.Text = Idade End If End Sub Essa diferença deve ocorrer por causa dos anos bissextos. Verifica aí e veja se é isso mesmo!
-
Para que a hora seja atualizada a cada segundo você vai precisar de um objeto "Timer". Configure a propriedade Interval para 1000 (corresponde a 1 seg). Um exemplo simples: Private Sub Timer1_Timer() Label1.Caption = Format(Time) End Sub Com esse código, a hora é atualizada a cada segundo. Já na seu caso: Private Sub Timer1_Timer() StatusBar1.Panels(x) = Time End Sub
-
Ou ainda... StatusBar1.Panels(1).Text = time StatusBar1.Panels(2).Text = Format(Date, "ddddd") StatusBar1.Panels(3).Text = Format(Date, "dddd") Entre na pesquisa do Visual Basic com a tecla F2 e procure sobre o comando "FORMAT". Você vai descobrir muitas maneiras de configurar datas e horas. Se você não tiver o help do VB instalado, uma dica é usar o VBA do MS Office (Alt + F11 no Word, Excel, Access). Lá você tb encontra o help do VB. Abraço!
-
faz o seguinte, coloca um MsgBox contendo o seu mask edit, tipo: MsgBox MaskEdBox1 e vê o que ele retorna quando está vazio. tenho um mask edit com a máscara ##/##/#### e quando ele está vazio retorna: __/__/____ e você ainda pode marcar a propriedade "PromptInclude" como "False". assim ele não vai incluir o underline.
-
Data Report - Relatório Entre Datas
pergunta respondeu ao Gabriel Cabral de Duduh_Capixaba em Visual Basic
É a data toda Kuroi. Na verdade eu quero que ao carregar o Form, o textbox receba a data sozinho. Do seu jeito funcionou legal. Eu também consegui assim: Text1.Text = Format(Now - Day(Now) + 1, "ddddd") -
Data Report - Relatório Entre Datas
pergunta respondeu ao Gabriel Cabral de Duduh_Capixaba em Visual Basic
Já que estamos falando de datas, alguém sabe como faço pra puxar o primeiro dia do mês corrente em um textbox? Tipo: Data Inicial: [PRIMEIRO DIA DO MÊS] Data Final : [DIA CORRENTE] Assim o usuário não precisaria ficar digitando as datas a toda hora. -
aê amigo, melhor mudar o assunto do tópico. esse tipo de título não vai te ajudar muito, além de ser contra as regras. vlw, abraço!
-
Data Report - Relatório Entre Datas
pergunta respondeu ao Gabriel Cabral de Duduh_Capixaba em Visual Basic
Venho eu com mais uma... Quando eu monto um relatório pelo Data Report eu uso um Data Environment e monto um Command com um comando SQL. Certo, depois é só puxar o relatório no projeto com o comando SHOW. Minha dúvida: Posso montar minha SQL em um TextBox, por exemplo, e fazer o Data Report enxergar esse TextBox? Eu gostaria de poder variar minha SQL para montagem do relatório. -
Data Report - Relatório Entre Datas
pergunta respondeu ao Gabriel Cabral de Duduh_Capixaba em Visual Basic
É, foi isso que eu fiz mesmo, usei várias condições. Mas achei que existia um outro jeito. Eu estou bolando um jeito de armazenar os dados em uma string e montar toda a SQL de uma vez só. estou quase conseguindo! Mas vlw aê Macêdo! -
Data Report - Relatório Entre Datas
pergunta respondeu ao Gabriel Cabral de Duduh_Capixaba em Visual Basic
Macêdo, funcionou velho (só que precisei trocar o WHERE por AND)! Mas surgiu outra dúvida: e se eu não quiser preencher um dos dois campos? Esse código funciona apenas se eu tiver os dois campos preenchidos, caso contrário dá erro. Vou pensar em um jeito aqui, mas agradeceria se puder me ajudar. Vlw, obrigado pela resposta! -
Data Report - Relatório Entre Datas
pergunta respondeu ao Gabriel Cabral de Duduh_Capixaba em Visual Basic
Gabriel, esse erro (Failed getting Rowset(s) from current data source) geralmente ocorre quando a textbox informada está passando um valor inválido para o campo da tabela informado na SQL. Por exemplo, você informa um texto (string) com letras na textbox e o campo da DB é numérico. Lembre-se que textos e datas devem se acompanhados de aspas simples ('SEU TEXTO AQUI') na montagem da SQL. Aproveitando a dúvida do Gabriel, quero perguntar algo com relação a Data Report tb. Estou aprendendo a usar filtros nos relatórios com o comando "FILTER". Um exemplo de código: deComercial.rsProdutos.Filter = "CODIGO=" & Text1 rptProdutos.Show Com isso, eu filtro meu relatório pelo código desejado. O problema é quando eu preciso de mais de um filtro. Se eu coloco vários comandos FILTER na minha linha de comando, o último código substitui todos os outros =/ Alguém sabe como montar um relatório com mais de um filtro? -
(Resolvido) Tópico Resolvido é Floodar?
tópico respondeu ao Duduh_Capixaba de Duduh_Capixaba em Sugestões e Críticas
hum, beleza pessoal da moderação! eu também penso assim :) agora fico mais tranqüilo para responder. vlw, abraço