electric Posted December 11, 2012 at 04:24 PM Report #486662 Posted December 11, 2012 at 04:24 PM Boas ppl é o seguinte Entre outros, tenho este problema, tenho uma variavel que contem um array e queria colocar esses valores em rows diferentes num grid parte o codio é For i = 0 To .runnerPrices.Length - 1 With .runnerPrices(i) Back = "" For j = 0 To .bestPricesToBack.Length - 1 With .bestPricesToBack(j) 'TablaGrid.Rows(i)("OddBack") = .price End With Next basicamente assim coloco o valor de .price numa row mas o proximo valor queria colocar na row seguinte da proxima coluna e nao estou a conseguir... Ja agora, como onsigo por 2 valores numa cell ? tipo a= .a &"|"& .b isto coloca na cell o valor dividido po | mas queria ter tipo um em cima e outro na mesma cel mas em baixo é possivel ?? cumps
electric Posted December 12, 2012 at 09:51 AM Author Report #486763 Posted December 12, 2012 at 09:51 AM bem apos 20 visualisações sem resposta provavelmente nao me soube explicar lool como tal vou expor isto de outra forma xD se eu tiver uma variavel que tem 9 valores e eu quero colocalos numa tabela 3*3 ou seja 0a | 0b | 0C 1a | 1b | 1c 2a | 2b | 2c Como o faria ? Cumprimentos
jlpcalado Posted December 12, 2012 at 03:22 PM Report #486797 Posted December 12, 2012 at 03:22 PM Olá. Se a ideia é colocares numa grid uma boa aproximaçãoi será usares uma datatable e fazeres o bind a uma datagridview. O código que envio exemplifica essa abordagem. Dim i As Integer Dim dt As New DataTable Dim dr As DataRow dt.Columns.Add("Mês") For i = 1 To 31 dt.Columns.Add(i.ToString) Next Dim Month As Integer Dim Days As Integer For Month = 0 To 11 dr = dt.NewRow Days = DateTime.DaysInMonth(Year(Now), Month + 1) dr(0) = Month + 1 For i = 1 To Days dr(i) = i Next i dt.Rows.Add(dr) Next Month dg.DataSource = dt Outra abordagem é criar um array bidimensional. O problema é que eles não são direta/ 'bindables' à datagrid. Será necessário criar as colunas da datagrid por código e adicionar o array linha a linha à datagrid.
electric Posted December 13, 2012 at 10:05 AM Author Report #486949 Posted December 13, 2012 at 10:05 AM Desde ja obrigado pela resposta void 🙂 Eu ja tenho uma datatable criada, o meu grande problema é que os valores no array nao estao a ser colocados correctamente la porque como disse em cima eu tenho um conjunto de 3 colunas para 3 linhas para fazer entao a tabela de 3*3 na mesma variavel, o que nao consigo é polos nesse formato, vou colocar a parte toda do codigo onde ta a duvida: Cria a tabela: Dim rowgrid As DataRow ' Dim rowgridback As DataRow With TablaGrid.Columns 'Set up all columns .Add("OddBack") .Add("OddLay") End With devia escrever nela! With mpriceresp If .errorCode = BFUK.GetMarketPricesErrorEnum.OK Then With .marketPrices For i = 0 To .runnerPrices.Length - 1 With .runnerPrices(i) Back = "" For j = 0 To .bestPricesToBack.Length - 1 With .bestPricesToBack(j) TablaGrid.Rows(i)("OddBack") = .price End With Next e depois surge o mesmo para outra variavel...
electric Posted December 13, 2012 at 11:04 AM Author Report #486957 Posted December 13, 2012 at 11:04 AM (edited) Boas, ja consegui resolver essa parte xD ficou desta maneira para quem posa vir a precisar: With mpriceresp If .errorCode = BFUK.GetMarketPricesErrorEnum.OK Then With .marketPrices For i = 0 To .runnerPrices.Length - 1 With .runnerPrices(i) For j = 0 To .bestPricesToBack.Length - 1 TablaGrid.Rows(i)("OddBack") = .bestPricesToBack(2).price TablaGrid.Rows(i)("OddBack1") = .bestPricesToBack(1).price TablaGrid.Rows(i)("OddBack2") = .bestPricesToBack(0).price Next For j = 0 To .bestPricesToLay.Length - 1 TablaGrid.Rows(i)("OddLay") = .bestPricesToLay(2).price TablaGrid.Rows(i)("OddLay1") = .bestPricesToLay(1).price TablaGrid.Rows(i)("OddLay2") = .bestPricesToLay(0).price Next End With Next End With End If End With no entanto continu aqui com uma duvida... agora que tenho isto tudo arranjadinho, como consigo por 2 valores na mesma celula mas um por baixo do outro exemplo: Ola mundo ABC é possivel ? acabou Edited December 13, 2012 at 11:04 AM by electric
electric Posted December 13, 2012 at 11:26 AM Author Report #486959 Posted December 13, 2012 at 11:26 AM Eu aqui todo contente e afinal continue mal... esta solução que arranjei realmente funciona mas so mesmo para esta selecção que estou a fazer... esquecime de que, cada selecção que eu fizer vai ser diferentes da anterior e como tal isto teria de ser tudo automatico :\ vou partir mais um pouco a cabeça... aradeço ajudas claro 😄 Abraços
electric Posted December 13, 2012 at 12:03 PM Author Report #486966 Posted December 13, 2012 at 12:03 PM Bem o erro que me da é Index was outside the bounds of the array. Pelo que andei a ver quer dizer que nao tenho linhas nenhumas e como tal nao as consegue escrever certo ? Agora secalhar o melhor para resolver seria sei la dividir esta operação em 2 blocos ? exemplo bloco 1 vai sacar os valores bloco 2 vai colocar os valores na grid Sera que isto resolveria ? Imfelizmente tenho de ir trabalhar nao consigo tar aqui mais tempo a testar 😞 Abraços
jlpcalado Posted December 13, 2012 at 08:17 PM Report #487021 Posted December 13, 2012 at 08:17 PM Olá. Torna-se difícil de perceber o que estás e o que pretendes fazer desconhecendo a estrutura do objecto 'mpriceresp'. Inicial/ estás a criar 2 colunas na grid, mas no procedimento iniciado com 'With mpriceresp' repara que estás tentar introduzir valores em 6 colunas (!!...) Deves 'sacar' os valores para as 3 colunas de cada linha e, então, adicionar a linha ...Não é possível por 2 valores na mesma célula óbvia/. Há produtos '3dParties' que disponibilizam rowstyles de fracções para a datagridview ...pagando.
electric Posted December 14, 2012 at 10:26 AM Author Report #487076 Posted December 14, 2012 at 10:26 AM Olá. Torna-se difícil de perceber o que estás e o que pretendes fazer desconhecendo a estrutura do objecto 'mpriceresp'. Inicial/ estás a criar 2 colunas na grid, mas no procedimento iniciado com 'With mpriceresp' repara que estás tentar introduzir valores em 6 colunas (!!...) Deves 'sacar' os valores para as 3 colunas de cada linha e, então, adicionar a linha ...Não é possível por 2 valores na mesma célula óbvia/. Há produtos '3dParties' que disponibilizam rowstyles de fracções para a datagridview ...pagando. Boas, Sim no fundo sao 6 colunas - correspondente ao balor a back que tem 3 colunas por 3 celulas e 3 linhas - correspondente ao valor lay que tem 3 colunas pro 3 celulas e 3 linhas mas isso neste caso pois podera surgir terem tipo 3 colunas 3 cellulas e umas quantas linhas o que me estas a sugerir se bem percebi é criar de antemao as 6 colunas ( ja esta feito logo no inicio e dei um nome a cada coluna obviamente ) e agora "sacar" os valores todos atribuilos a 6 variaveis diferentes e so depois colocalas la ?
electric Posted December 14, 2012 at 11:13 AM Author Report #487087 Posted December 14, 2012 at 11:13 AM With TablaGrid.Columns 'Set up all columns .Add("SelectionId") .Add("Name") .Add("OddBack") .Add("OddBack1") .Add("OddBack2") .Add("OddLay2") .Add("OddLay1") .Add("OddLay") End With mpriceresp = Me.BetFairUK.getMarketPrices(mpricesreq) With mpriceresp If .errorCode = BFUK.GetMarketPricesErrorEnum.OK Then With .marketPrices For i = 0 To .runnerPrices.Length - 1 With .runnerPrices(i) back = "" For j = 0 To .bestPricesToBack.Length - 1 With .bestPricesToBack(j) MsgBox(back & .price) 'TablaGrid.Rows(i)("") = back & .price 'TablaGrid.Rows(i)("OddBack") = .bestPricesToBack(2).price 'TablaGrid.Rows(i)("OddBack1") = .bestPricesToBack(1).price 'TablaGrid.Rows(i)("OddBack2") = .bestPricesToBack(0).price End With Next End With With .runnerPrices(i) For j = 0 To .bestPricesToLay.Length - 1 ' If .bestPricesToLay.Length > 0 Then 'TablaGrid.Rows(i)("OddLay") = .bestPricesToLay(2).price 'TablaGrid.Rows(i)("OddLay1") = .bestPricesToLay(1).price 'TablaGrid.Rows(i)("OddLay2") = .bestPricesToLay(0).price 'End If Next End With Next End With End If End With DgGrid.DataSource = TablaGrid 'Show the data DgGrid.Refresh() Lembreime de testar e deu resultado... ou seja coloque a msgbox mostrar o valor back & .price e ele realmente mostra os valores todos certos e na seguinte ordem: |3|2|1| |6|5|4| |9|8|7| Agora pergunto eu :\ ha maneira de meter isso direcatmente la ? ou seja em vez de mostrar pela msgbox ecrever directamente na grid?
jlpcalado Posted December 14, 2012 at 11:59 AM Report #487095 Posted December 14, 2012 at 11:59 AM Cria uma datarow derivada da tablagrid associa os valores à datarow adiciona a datarow à tablagrid With TablaGrid.Columns 'Set up all columns .Add("SelectionId") .Add("Name") .Add("OddBack") .Add("OddBack1") .Add("OddBack2") .Add("OddLay2") .Add("OddLay1") .Add("OddLay") End With Dim dr As DataRow mpriceresp = Me.BetFairUK.getMarketPrices(mpricesreq) With mpriceresp If .errorCode = BFUK.GetMarketPricesErrorEnum.OK Then With .marketPrices For i = 0 To .runnerPrices.Length - 1 dr = TablaGrid.NewRow dr(0) = "valor selectionId" dr(1) = "valor Name" With .runnerPrices(i) back = "" For j = 0 To .bestPricesToBack.Length - 1 With .bestPricesToBack(j) dr(j + 2) = back & .price End With Next End With With .runnerPrices(i) For j = 0 To .bestPricesToLay.Length - 1 dr(j + 5) = back & .price Next End With TablaGrid.Rows.Add(dr) Next End With End If End With DgGrid.DataSource = TablaGrid 'Show the data DgGrid.Refresh()
electric Posted December 14, 2012 at 01:17 PM Author Report #487103 Posted December 14, 2012 at 01:17 PM Muito obrigado jlpcalado, um dia vou conseguir fazer estas cenas sozinho xD mas ate la ´mt leitura e ajuda 🙂 tinha ficado em duvida do porke dos dr(j + 5) = back & .price j+5 mas ja fikei a saber o que fazem, no entanto tenho outro problema! é que o selectionid e o name não sao valores que eu coloque a mao! sao valores qye veem de outraas variaveis que tambem sao descarregadas da API, e como tal alterei aqui um pouco a tua receita e ja deu mas, agora criame um quadro com o selectionid e o nome e na linha de baixo é que me da os valores ou seja nao estam na mesma linha... o segundo problema é que nop primeiro With .runnerPrices(i) back = "" For j = 0 To .bestPricesToBack.Length - 1 With .bestPricesToBack(j) dr(j + 2) = back & .price End With Next End With esta tudo ok mas os valores estao trocados ou seja esta |1|2|3| e eu preciso deles em |3|2|1| ando desde ontem a volta lol ja avancei bastante co ma ajuda de todos mas ainda nao fui a cama lool e agora tenho de ir trabalhar xD logo a noite volto ao ataque Abraços
jlpcalado Posted December 14, 2012 at 02:57 PM Report #487122 Posted December 14, 2012 at 02:57 PM A instrução TablaGrid.Rows.Add(dr) adiciona uma linha à tabela - tens que controlar a posição no programa em que é efetuada - claro que deve ser após ter todas as colunas da dr preenchidas. Em caso de (!!) dúvida coloca os dr(0) e dr(1) imediata/ antes da instrução: dr(0) = "valor selectionId" dr(1) = "valor Name" TablaGrid.Rows.Add(dr) òbvia/ que nessa altura o programa já deve saber os "valor selectionId" e "valor Name" Deves controlar, também, a sequência en que introduzes os valores... na situação que referes basta trocar a definição do ciclo : For j = .bestPricesToBack.Length - 1 to 0 Step -1
electric Posted December 15, 2012 at 10:40 AM Author Report #487219 Posted December 15, 2012 at 10:40 AM (edited) Bom dia, estive a tentar fazer o que me disseste e até andei a trocar numeros ( a melhor maneira de eu conseguir perceber .. estupido mas é aminha maneira xD ) e nao resolveu eu agora depois de alterar tudo conforme os teus parametros ficou assim: Sub criatabela() TablaGrid.Rows.Clear() TablaGrid.Columns.Clear() Dim oMarketReq As New BFUK.GetMarketReq 'Create the request object Dim oMarketResp As BFUK.GetMarketResp 'Create a varaible for the response object 'Dim rowgrid As DataRow With TablaGrid.Columns 'Set up all columns .Add("SelectionId") .Add("Name") .Add("OddBack") .Add("OddBack1") .Add("OddBack2") .Add("OddLay2") .Add("OddLay1") .Add("OddLay") End With With (oMarketReq) .header = FrmLogin.oHeaderUK() .marketId = FrmMercado.iddomercado End With oMarketResp = Me.BetFairUK.getMarket(oMarketReq) 'Call the API (getMarket) With oMarketResp 'Process the response FrmLogin.CheckHeader(.header) If .errorCode = BFUK.GetMarketErrorEnum.OK Then With .market For i = 0 To .runners.Length - 1 dr = TablaGrid.NewRow With .runners(i) dr(0) = .selectionId dr(1) = .name End With TablaGrid.Rows.Add(dr) Next End With End If End With Dim mpricesreq As New BFUK.GetMarketPricesReq Dim mpriceresp As New BFUK.GetMarketPricesResp With (mpricesreq) .header = FrmLogin.oHeaderUK .marketId = FrmMercado.iddomercado End With mpriceresp = Me.BetFairUK.getMarketPrices(mpricesreq) With mpriceresp If .errorCode = BFUK.GetMarketPricesErrorEnum.OK Then With .marketPrices For i = 0 To .runnerPrices.Length - 1 dr = TablaGrid.NewRow With .runnerPrices(i) back = "" For j = .bestPricesToBack.Length - 1 To 0 Step -1 With .bestPricesToBack(j) dr(j + 2) = back & .price End With Next End With With .runnerPrices(i) lay = "" For j = 0 To .bestPricesToLay.Length - 1 With .bestPricesToLay(j) dr(j + 5) = lay & .price End With Next End With TablaGrid.Rows.Add(dr) Next End With End If End With DgGrid.DataSource = TablaGrid 'Show the data DgGrid.Refresh() End Sub no entanto contiu como tinha antes .... ou seja |id|name| |id|name| |id|name| |1|2|3|1|2|3 ... isto porque no lay o primeiro é mesmo o num 1 no caso do back como tenho a coluna a fazer este sentido -><- tem de estar ao contrario :\ mais uma vez muito agradecido vou partir mais um pouco a cabeça... 🙂 Edited December 15, 2012 at 01:18 PM by electric
jlpcalado Posted December 15, 2012 at 02:53 PM Report #487252 Posted December 15, 2012 at 02:53 PM Atenção! Numa 1ª fase estás a adicionar 'alhos' - oMarketResp.market.runners(i) Numa 2ª 'bugalhos' - mpriceresp.marketPrices.runnerPrices(i) Tens que determinar como é que os 'bugallhos' se relacionam com os 'alhos'. Como não conheço o modelo da API, numa primeira aproximação é expectável que a 2ª variável (bugalhos) tenha uma propriedade que permita a relação com a propridade 'selectionId' da 1ª (alhos). Neste caso o ciclo iniciado com With mpriceresp deve correr dentro do ciclo With .runners(i)
electric Posted December 17, 2012 at 10:56 AM Author Report #487475 Posted December 17, 2012 at 10:56 AM Bem que dor de cabeça que isto me teem dado ... axo que ja tentei de tudo e nada, coloquei o with mpricesresp dentro do with .runners(i) nada continua a dar acho que um pouco pior porque alem de me colocar: nome1 prices 1 prices 2 prices 3 nome 2 prices 1 ... Ainda continua a ter a sequencia dos prices errada ou seja em vez de 3 2 1 continua com o 1 2 3 so me apetece desistir mas o meu feito nao me deixa...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now