Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Tenho forms com DataGrid os dados que aparecem neles vem direto do BD e aparece os nomes das colunas do BD como faço pra aparecer o nome que eu colocar em cada campo que vier do banco ao invés dos nomes da colunas do BD ?
Esse é o código que eu uso pra trazer do banco e preencher o DataGrid.
Private Sub preenche_grid()
With cmd
.ActiveConnection = Conex
.CommandType = adCmdText
.CommandText = "select nome As nome from clientes"
End With
With rs
Set DataGrid1.DataSource = rs
End With
End Sub
>
Colocando nome nas colunas pelo SQL não funcionou?
select nome as NomeCliente from clientes
Deve aparecer NomeCliente no grid.
Não funcionou aparece do mesmo jeito.
Boa Tarde Gabriel
não sei se entendi a tua pergunta mas no meu grid que trago de uma tabela eu faço assim
Private Sub Preenche_GrdPecas()
'chama a tabela produtos e joga os dados no mshflexgrid
rsProdutos.Open "Select * From Produtos", cnnCetecInfServiços, 1, 2
If rsOficina1.RecordCount > 0 Then
With GrdPecas
.Clear
.Cols = 4
.SelectionMode = flexSelectionByRow
.ColWidth(0) = 600
.TextMatrix(0, 0) = "[u]Código[/u]"
.ColWidth(1) = 6000
.TextMatrix(0, 1) = "[u]Descrição[/u]"
.ColWidth(2) = 1100
.TextMatrix(0, 2) = "[u]PrecoCompra[/u]"
.ColWidth(3) = 1100
.TextMatrix(0, 3) = "[u]PrecoVenda[/u]"
.Rows = rsOficina1.RecordCount + 1
rsOficina1.MoveFirst
For i = 1 To rsOficina1.RecordCount
.TextMatrix(i, 0) = IIf(IsNull(rsProdutos!Referencia), "", rsProdutos!Referencia)
.TextMatrix(i, 1) = IIf(IsNull(rsProdutos!Descricao), "", rsProdutos!Descricao)
.TextMatrix(i, 2) = IIf(IsNull(rsProdutos!PrecoCompra), "", Format(rsProdutos!PrecoCompra, "0.00"))
.TextMatrix(i, 3) = IIf(IsNull(rsProdutos!PrecoVenda), "", Format(rsProdutos!PrecoVenda, "0.00"))
rsProdutos.MoveNext
Next i
End With
Else
GrdPecas.Clear
vinfo = MsgBox("Não houve Lançamentos no período informado", vbInformation + vbOKOnly, "Histórico de Lançamentos")
End If
rsProdutos.CloseValeu Nereu mais não deu certo não...você usa o msflexgrid eu to usando DataGrid.
Tenta este código e chame-o após a consulta ao banco de dados.
Sub preencher()
Dim i As Integer
On Error Resume Next
Set grid.DataSource = rsMySQL
With grid 'with significa com e substitui variavel a frente dele
.Columns(0).Caption = "DD Número"
.Columns(0).Alignment = dbgCenter
.Columns(0).Width = 1350
.Columns(1).Caption = " Data"
.Columns(1).Alignment = dbgCenter
.Columns(1).Width = 1100
.Columns(2).Caption = "Cia"
.Columns(2).Alignment = dbgCenter
.Columns(2).Width = 500
'numero refere-se as posições dos campos
End With
>
Tenta este código e chame-o após a consulta ao banco de dados.
Sub preencher()
Dim i As Integer
On Error Resume Next
Set grid.DataSource = rsMySQL
With grid 'with significa com e substitui variavel a frente dele
.Columns(0).Caption = "DD Número"
.Columns(0).Alignment = dbgCenter
.Columns(0).Width = 1350
.Columns(1).Caption = " Data"
.Columns(1).Alignment = dbgCenter
.Columns(1).Width = 1100
.Columns(2).Caption = "Cia"
.Columns(2).Alignment = dbgCenter
.Columns(2).Width = 500
'numero refere-se as posições dos campos
End With
Na mosca rorlando mais ficou uma dúvida os registros estão aparecendo nas linhas com espaço tentei usar trim mais não traz os registros como faço pra resolver isso ?
Valeu!
Não entendi qual é a sua dúvida!
Aparece um registro em uma linha e na outra fica em branco, assim sucessivamente?
Ou surgem espaços entre os campos dos registros?
Mostre seu código.
>
Não entendi qual é a sua dúvida!
Aparece um registro em uma linha e na outra fica em branco, assim sucessivamente?
Ou surgem espaços entre os campos dos registros?
Mostre seu código.
Então o código tá normal o problema é o espaço no registro, vou dar um exemplo pra você entender melhor.
Eu busco os dados e no DataGrid aparece asssim
Nome | Endereco
___Joao___|
Fica um espaço ali onde eu coloquei o ___ entendeu o nome joão não aparece na linha só se eu clica dentro dela ai eu visualizo caso contrário ele fica "escondido".
Rorlando dá uma olhada na imagem que você vai entender o que quero.
/applications/core/interface/imageproxy/imageproxy.php?img=http://img43.imageshack.us/img43/742/espaco.jpg&key=914bffdb755a490cd33bbf41f1cb7961833d8a333a4ddd9e457f13ff9a343f62" alt="Imagem Postada" />
Na segunda olha onde o cursor fica,tipo ele traz trás o espaço do campo do BD.
Tenta um RTRIM no sql.
>
Tenta um RTRIM no sql.
Eu colocaria no selct ?
select * from clientes
eu uso isso pra mostrar os dados.
Meu código todo tá assim
Dim i As Integer
On Error Resume Next
Set DataGrid1.DataSource = rs
With DataGrid1
.Columns(0).Caption = "Código"
.Columns(0).Alignment = dbgCenter
'.Columns(0).Width = 1000
.Columns(1).Caption = "Empresa"
.Columns(1).Alignment = dbgCenter
'.Columns(1).Width = 1000
.Columns(2).Caption = "Tipo de Estab."
.Columns(2).Alignment = dbgCenter
'.Columns(2).Width = 1000
.Columns(3).Caption = "Razão Social"
.Columns(3).Alignment = dbgCenter
'.Columns(3).Width = 1200
.Columns(4).Caption = "Endereço"
.Columns(4).Alignment = dbgCenter
'.Columns(4).Width = 1200
.Columns(5).Caption = "Bairro"
.Columns(5).Alignment = dbgCenter
'.Columns(5).Width = 1200
.Columns(6).Caption = "Cidade"
.Columns(6).Alignment = dbgCenter
'.Columns(6).Width = 1200
End With
Isso, no select.
select rtrim(nome) from clientes
Seu campo no banco é char, não é?
Normalmente consta o tamanho para cada coluna (.Columns(0).Width = 1500), com valor variando de acordo com o conteúdo do campo.
Antes de gravar os dados na tabela eu elimino todos os espaços vazios que possam existem antes ou após os dados [trim(variável ou campo)], se já salvou altere os dados do campo com UPDATE.
>
Isso, no select.
select rtrim(nome) from clientes
Seu campo no banco é char, não é?
Isso mesmo é char, mais nesse select com o rtrim, eu teria que colocar todos os campos da tabela ?
Só nos que você precisa.
Coloquei aqui deu certo mais agora não abre nas texts os registros e dá esse erro.
Run-time error'3625':
O item não pode ser encontrado na coleção correspondente ao nome ou ao ordinal solicitado.
Meu código todo ficou assim.
Private Sub cmdEditar_Click()
Desblokeio
Call conexao
Conex.CursorLocation = adUseClient
If rs.State = 1 Then rs.Close
rs.Open "select rtrim(codigo),rtrim(nome),rtrim(estab),rtrim(razao),rtrim(endereco),rtrim(bairro),rtrim(cidade),rtrim(estado),rtrim(cep),rtrim(cnpj),rtrim(inscricao),rtrim(ccm),rtrim(fone1),rtrim(fone2),rtrim(fone3),rtrim(fax),rtrim(resp),rtrim(cargo),rtrim(email),rtrim(site) from clientes", Conex, adOpenDynamic, adLockOptimistic
If rs.BOF Then
Blokeio
Else
Desblokeio
End If
If rs.EOF Then
MsgBox "Nenhum registro foi encontrado!", vbExclamation, "De Luca Serviços"
ElseRenomeie as colunas no sql.
select rtrim(nome) as nome, rtrim...
>
Renomeie as colunas no sql.
select rtrim(nome) as nome, rtrim...
Certinho Scorpio...valeu cara depois passa lá no boteco pra tomar uma rsrs
http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
Resolvido então.!
Abraços!!
Colocando nome nas colunas pelo SQL não funcionou?
select nome as NomeCliente from clientes
Deve aparecer NomeCliente no grid.