Ir para conteúdo
Fórum Script Brasil

Macêdo

Membros
  • Total de itens

    303
  • Registro em

  • Última visita

Tudo que Macêdo postou

  1. Este erro: Erro de sintaxe na instrução INSERT INTO. Ocorre se tiver uma "," virgula fora do lugar ou faltando, ou aspas erradas, infelizmente tem que olhar tudinho na calma, não tem outro jeito.
  2. Não pus o codigo todo certinho não, foi só pra você pegar o fio da meada e tentar mesmo. Um With sempre precisa ser fechado com End With. O que quis dizer é que você tem que fazer um select antes de inserir, preencher um recordset onde o campo que você não quer que duplique seja igual ao que aparece na text, então se o recordset encontrar é porque já existe, então você trata para não inserir ou alterar, e caso o recordset venha vazio, ou seja recordcount = 0, é porque não existe ainda, então você põe o codigo para inserir neste caso, veja este exemplo: [b]faz o select para saber se o campo já existe[/b] With cmd .ActiveConnection = cnn .CommandType = adCmdText .CommandText = "select cod, nome from socios where cod = " & vCod_socio & "" Set rs = .Execute End With With rs If (.BOF And .EOF) Then [b]'se não existe, insere[/b] With cmd .ActiveConnection = cnn .CommandType = adCmdText .CommandText = "insert into socios " & _ "(cod, matricula, cpf, nome, rg, telefone, celular, nascimento, email, endereco, estado_civil, conjuge, pai, mae, empresa, telefone_empresa) values (" & _ vCod_socio & ",'" & _ Text_cod & "', '" & _ Text_cpf & "','" & _ Text_nome & "','" & _ Text_rg & "','" & _ Text_telefone & "','" & _ Text_celular & "','" & _ Text_nascimento & "','" & _ Text_email & "','" & _ Text_endereco & "','" & _ Combo_estado_civil & "','" & _ Text_conjuge & "','" & _ Text_pai & "','" & _ Text_mae & "','" & _ Text_empresa & "','" & _ Text_telefone_empresa & "');" .Execute End With vinfo = MsgBox("Cadastro efetuado com sucesso", vbInformation _ + vbOKOnly, "Cadastro de Sócios") Unload Me Form_socios.Show Else [b] 'se existe altera[/b] vinfo = MsgBox("Deseja salvar as alterações feitas" & _ " ao cadastro de " & rs!nome & " ? ", vbYesNo + vbQuestion _ , "Cadastro de Sócios") If vinfo = vbYes Then With cmd .ActiveConnection = cnn .CommandType = adCmdText .CommandText = "update socios set " & _ "cpf = '" & Text_cpf & "'," & _ "nome = '" & Text_nome & "', " & _ "rg = '" & Text_rg & "'," & _ "telefone = '" & Text_telefone & "'," & _ "celular= '" & Text_celular & "'," & _ "nascimento = '" & Text_nascimento & "'," & _ "email= '" & Text_email & "'," & _ "estado_civil = '" & Combo_estado_civil & "'," & _ "conjuge = '" & Text_conjuge & "'," & _ "pai = '" & Text_pai & "'," & _ "mae = '" & Text_mae & "'," & _ "empresa = '" & Text_empresa & "'," & _ "telefone_empresa = '" & Text_telefone_empresa & "'," & _ "endereco = '" & Text_endereco & "' where cod = " & vCod_socio & ";" .Execute End With vinfo = MsgBox("Alteração efetuada com sucesso", vbInformation _ + vbOKOnly, "Cadastro de Sócios") Unload Me Form_socios.Show End If End If End With
  3. para não ficar toda hora chamando o recordset você cria uma variavel num modulo, e joga nela o valor do coduser assim que o usuário for logado No modulo Public CodUser as Long Então quando o usuario fizer o logon você joga o valor do recordset do coduser da tabela nesta variavel CodUser = Rs!coduser agora você está com o coduser do usuario para usar em qualquer form, qualquer procedimento, sem precisar ter que carregar um recordset toda hora.
  4. é só fazer uma busca antes com um select, caso encontre o nome na tabela informa, caso não encontre então insere. select codusuario, senha from contatos_senha where codusuario = '" & txtnome & "'" With rs_busca if (.BOF and .EOF) then 'se não encontrou insere Set rsass = New ADODB.Recordset SQLASS = "INSERT INTO CONTATOS_SENHA " SQLASS = SQLASS & "(CODUSUARIO, SENHA )" SQLASS = SQLASS & "VALUES ( '" & Me.txtnome.Text & "','" & Me.txtsenha.Text & "')" Set rsass.ActiveConnection = cnass 'rsTarefas.Open SQL cnass.Execute SQLASS MsgBox "Cadastro de Assessor efetuado com sucesso" else msgobox "Usuario já existe"
  5. Com certeza, se já existe uma tabela com os usuarios e os tipos é só você por um if antes de executar qualquer procedimento, exemplo: digamos que seja abrir um form que só os administradores devem ter acesso Private sub cmd_abrir_form_adm if coduser = 1 then form_adm.show else msgbox "Você não possui permissão para visualizar esta área" end if End Sub
  6. Exatamente, você usará o excel para criar a Tela do programa, o qual irá acessar os dados do access, gravando registros, alterando, excluindo, mostrando os dados conforme o necessario pelo usuario, etc...o Access será a base onde ficará as informações e o excel o programa em si. Fica bem legal, não é como fazer um programa com o Visual Basic, mas é bem interessante. O codigo que te passei é o inicio, mostra como fazer a conexão, voce irá precisar aos poucos incrementar os codigos de inserção de dados nas tabelas do Access, alteração, exclusão ...como mostrar os dados em controles como Listview, Listbox, combos etc... Para dicas sobre como fazer estes procedimentos verifique no FORUM visual Basic, nos TUTORIAIS E DICAS, tem umas dicas que postei lá, o codigo é o mesmo, não tem diferença nenhuma trabalhar no Visual ou no Excel com VBA. Qualquer questionamento fique a vontade para postar ou mandar email's
  7. Private Sub Worksheet_Change(ByVal Target As Range) Dim x As Long Dim y As Long Dim plan1A As Long For y = 1 To 50 plan1A = Plan1.Cells(y, 1) plan1L = Plan1.Cells(y, 12) plan1M = Plan1.Cells(y, 13) plan1N = Plan1.Cells(y, 14) For x = 1 To 50 If Plan2.Cells(x, 1) = plan1A Then Plan2.Cells(x, 12) = plan1L Plan2.Cells(x, 13) = plan1M Plan2.Cells(x, 14) = plan1N End If Next x Next y End Sub
  8. Para pegar o caminho use uma commomdialog e armazene o caminho numa string, depois lance esta string no campo text do BD Dim caminho as string CommonDialog1.ShowOpen caminho = CommonDialog1.Filename Agora é só jogar a string (caminho) no BD Para copiar a figura para outro lugar utilize o Filecopy Dim destino as String 'coloque aqui o local onde sera gravado a figura FileCopy "" & caminho & "", "" & destino & ""
  9. Converta tudo, os totais tambem TOTAL_GERAL = cdbl((cdbl(TOTAL_PARCIAL1) + cdbl(TOTAL_PARCIAL2)))
  10. Converta os valores para Double exemplo (Cdbl(QTD1) * Cdbl(LOTE1) * Cdbl(PRECO1)) = Cdbl(TOTAL_PARCIAL1)
  11. Crie as tabelas com os campos etc...(No Access) Depois, acesse o Banco Access pelo excel da mesma forma que se acessa no Visual Basic, é simples: 1º Crie a conexão 2º Crie os objetos Command e Recordset para retornar (consultas) e Gravar (inserção e alteração) de dados no Banco Você precisará inserir a Referencia à biblioteca da ADO, da seguinte forma: Vá no VBA Menu Ferramentas Referencias Selecione a caixa que contem (Microsoft ActiveX Data Objects 2.8 Library) Dê OK Pronto Insira um modulo da seguinte forma: Menu Inserir Modulo Agora coloque nele a string de conexão, Comando e Recordset Public cnn As New ADODB.Connection 'conexão Public cmd As New ADODB.Command 'comando Public rs As New ADODB.Recordset 'recordset Insira o formulario Menu Inserir Userform Acrescente os controles que irá usar, como: Botoes de Comando, ListBox, Listview, Combos etc... Agora vamos a conexão Pode por a string que irá fazer a conexão no evento Activate do Userform Private Sub UserForm_Activate() cnn.ConnectionString = "provider = microsoft.jet.oledb.4.0;" & _ "data Source = C:\meus documentos\BD.mdb;" cnn.CursorLocation = adUseClient cnn.Open End Sub Conexão feita...
  12. Coloque o Recordset num modulo e declare como public Public Rs as New ADODB.Recordset
  13. Coloque o seguinte codigo no evento change da text, não precisa da function com outro select: Private Sub txtempresa_Change() With cmdbusca .ActiveConnection = cnnbusca 'nome da conexão .CommandType = adCmdText .CommandText = "SELECT CODEMP, NOMEMPRESA, ENDEMPRESA, CIDEMPRESA, UFEMPRESA, TELEMPRESA from CONTATOS_EMPRESA where NOMEMPRESA like '" & txtempresa & "%'" 'seleciona os dados da tabela que vao para o grid Set rsbusca = .Execute End With With rsbusca Set frmpesq.DataGrid5.DataSource = rsbusca 'aqui já lança os dados no Datagrid5 End With End Sub
  14. Dá pra diminuir um pouco o codigo Public Sub carrega() If Not cn.State = adStateOpen Then cn.Open "DSN=local" 'produto sql = "SELECT * FROM produto" With cmd .ActiveConnection = cn .CommandType = adCmdText .CommandText = sql Set rs = .execute End With 'grupo sql = "select * from grupo" With cmd2 .ActiveConnection = cn .CommandType = adCmdText .CommandText = sql Set rs2 = .Execute End With End Sub
  15. Coloque no evento Change da textbox o select e logo abaixo dele o codigo para preencher o grid, no select coloque para buscar os nomes pela primeira letra Private Sub Text_busca_Change() Select nome from tabela where nome like '" & text_busca & "%'" preenche_grid End sub
  16. coloque a propriedade do textbox cangrow = true ou utilize um Label no lugar do textBox e coloque o tamanho que quizer e o texto sera ajustado
  17. Macêdo

    Ordenar Maiores e Menores

    Pode ser feito com Excel, usando VBA a mesma linguagem do VB, acredito que no access tabem... Se você possui os numeros numa planilha do excel, ou numa tabela do access você pode acessar os dados por uma Plan excel externa usando a conexão com o Jet OLEDB trabalhando com (ADO) da mesma forma que no VB e conseguir os resultados de acordo o que deseja atraves das SQL's exemplo: 1)Como posso relacionar os números que "mais vieram" a cada novo resultado?OBS:informando a quantidade de vezes SQL = select count(numero) from Loteria group by numeros order by numero desc esta pesquisa retornaria a quantidade de vezes que ocorreu um certo numero ordenado do que mais saiu ao que menos saiu...e por ai vai. Se você não possui o VB procure estudar um pouco sobre o VBA (excel) dê uma olhada nos tutoriais que deve ter algo sobre.
  18. Vamos pela ordem, para criar uma tabela num BD você utiliza a mesma conexão, não precisa mudar nada (se estiver usando ADO) abaixo uma sub com a conexão e outra que cria a tabela e os campos sendo executadas no evento do Form(Forma_Load) : Private Sub Form_Load() conectar criar_tabela_campos End Sub Private Sub conectar() cnn.ConnectionString = "provider = microsoft.jet.oledb.4.0;" & _ "data Source = " & App.Path & "\BD.mdb;" cnn.CursorLocation = adUseClient cnn.Open End Sub Private Sub criar_tabela_campos() sSQl = "CREATE TABLE tabela (cod integer, nome text(150));" cnn.Execute sSQl cnn.Close End Sub A segunda pergunta é o seguinte, você disse que cria no Access 2000 (Tá usando o VisData do VB ?) quando você abre este banco no Access 2007 a conexão muda pois quando o banco é aberto numa versão mais nova do access ele é convertido então a conexão para o access 2000 não irá funcionar. No exemplo acima, para criar uma nova tabela no Banco eu usei a conexão do Access 2000, mas para o 2007 você deve usar a conexão abaixo: Conexão access 2007 Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccess2007file.accdb;Persist Security Info=False; Conexão access 2007 com senha Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccess2007file.accdb;Jet OLEDB:Database Password=MyDbPassword;
  19. Ta faltando mais informação para podermos te ajudar Lucas...
  20. Macêdo

    comboBox

    Poste seu codigo, como você está tentando inserir o dado da combo no BD ?
  21. Macêdo

    combobox

    Primeiro: Tem que ter referencia à biblioteca Microsoft ActiveX Data Objects2.8 Library (ADO) (você encontra no menu Project References)marque a bilioteca e adicione ao projeto depois tem que criar a conexão e o objeto command para chamar os dados num recordset Coloque no form (general Declarations) Dim cnn As New ADODB.Connection Dim cmd As New ADODB.Command Dim rs As New ADODB.Recordset 'aqui a rotina da conexão que você chamará no form Load Private Sub conectar() cnn.ConnectionString = "provider = microsoft.jet.oledb.4.0;" & _ "data Source = " & App.Path & "\BD.mdb;" cnn.CursorLocation = adUseClient cnn.Open End Sub 'conectando ao banco Private Sub Form_Load() conectar End Sub agora o codigo para preencher o combo Private Sub preenche_combo() With cmd .ActiveConnection = cnn .CommandType = adCmdText .CommandText = "select distinct cidades from clientes" Set rs = .Execute End With With rs Do While Not rs.EOF combo_cidade.AddItem rs!cidades rs.MoveNext Loop End With End Sub pode chamar esta rotina para preencher a combo em qualquer evento, pode ser no proprio FORM_LOAD após a conexão: Private Sub Form_Load() conectar preenche_combo End Sub
  22. Macêdo

    combobox

    sql = "select distinct cidade from clientes do while not rs.eof combo_cidade.Additem rs!cidade rs.movenext loop
  23. Kuroi apareceu o seguinte erro: subscript out of range estou usando o mshflex será diferente do msflex ?
  24. Então kuroi, me diz uma coisa, se fosse pra você inserir os dados de um Flex no BD como faria ? da pra passar um exemplo assim: No flex Coluna1 Coluna2 Coluna3 Coluna4 texto texto texto texto texto texto texto texto texto texto texto texto sendo que o BD tem a mesma quantidade de colunas e estão na mesma ordem, como ficaria o FOR com o INSERT INTO neste caso ?
  25. Kuroi, mesmo escrevendo só os valores dos Values ainda fica grande, terei que relacionar os 98 nomes das colunas da plan. Pensei em outra coisa, jogar primeiro num listView e depois jogar do lsitView no BD, mas terei que aprender a lançar os dados do list no BD tambem. Outra cousa que consegui fazer foi com um pequeno FOR criar um Recordset Desconectado e carreguei todos estes dados, ou seja o recordset desconectado ficou igual a planilha, se tivesse como jogar este Rs no BD... webdeveloper Este banco fica em REDE e é acessado por inumeros vendedores através do meu programa, cada um possue esta planilha para importar os dados de sua produção constantes na planilha para a base de dados.
×
×
  • Criar Novo...