Jump to content

All Activity

This stream auto-updates     

  1. Yesterday
  2. RT @_SrtaWhite_: A puta t√° pedindo pika no cu ūüėĀ Para de bater punheta e vem meter nesse cu seu safado Chama: https://t.co/dJFX2ah2qD @P‚Ķ

  3. Last week
  4. J√° fui e tava chovendo no dia = √°gua turva ūü§¶ūüŹĽ‚Äć‚ôāÔłŹ https://t.co/iBrf6dPwyv

  5. @senador93 Vulgo manjador de órgão reprodutor masculino

  6. @Manimal testei usano o comando "VACUUM INTO" e melhorou demais a velcidade para criar o banco de dados, obrigado mais uma vez!
  7. Criar e ler um banco de dados SQlite

    Buenas! Sempre que falamos em clonar um banco em mem√≥ria, nosso objetivo √© melhorar o tempo de resposta para fun√ß√Ķes de massa, como grandes e complexas consultas por exemplo, que talvez ao serem efetuadas a partir do disco (BD original) possam resultar bem mais lentas para apresentar os resultados. Grandes altera√ß√Ķes no banco como inser√ß√£o em massa de dados, altera√ß√Ķes ou exclus√Ķes tamb√©m podem ocorrer. Ent√£o, ao clonarmos o BD para a mem√≥ria, temos que ter em mente que eventuais altera√ß√Ķes feitas na mem√≥ria podem ter 2 (dois) destinos: s√£o ignoradas, ou seja o BD serve apenas para SELECTs e o que vale √© o BD em disco; precisam ser salvas, ou seja, em algum momento, precisam ser descarregadas/efetivadas/replicadas em disco. Na op√ß√£o 1, o problema est√° resolvido. Ignora-se o BD em mem√≥ria e tudo bem! Na op√ß√£o 2 o buraco √© bem mais embaixo. Aqui temos novamente 2 (duas) possibilidades: efetivamos as altera√ß√Ķes √† medida que acontecem! Pessoalmente √© a que eu utilizo por algumas raz√Ķes: mantenho o BD em mem√≥ria igual ao BD no disco (sincroniza√ß√£o); caso ocorra alguma falha no equipamento (reset, falta de luz, travamento, etc) as altera√ß√Ķes est√£o seguras; ao iniciar o script, carrego novamente o BD em mem√≥ria, sabendo que √© a √ļltima vers√£o das informa√ß√Ķes e parto disto; n√£o preciso me preocupar em descarregar as altera√ß√Ķes posteriormente (no final do programa ou em algum ponto definido) e neste momento qualquer ganho de tempo que eu tive, foi por √°gua abaixo, pois o tempo de grava√ß√£o em disco de todas as altera√ß√Ķes √© enorme. Como fazemos isso? Ap√≥s a clonagem do BD em mem√≥ria, qualquer altera√ß√£o ao ser executada, deve ser feita tanto em mem√≥ria como em disco. #include <Sqlite.au3> ; incializa SQLite _SQLite_Startup() ; Abre BD em mmória Local $hBD_Mem = _SQLite_Open() ; Abre BD em disco Local $hBD_Disco = _SQLite_Open(@ScriptDir & "\BancoDeDados.db") ; ... ; Faz a clonagem conforme as técnicas explicadas em post anterior ; ... ; faz as eventuais alterações no BD mem e no BD disco _SQLite_Exec($hBD_Mem, "UPDATE Tabela SET Estado = "SC" WHERE Codigo = 425;") _SQLite_Exec($hBD_Disco, "UPDATE Tabela SET Estado = "SC" WHERE Codigo = 425;") ; faz as eventuais alterações no BD mem e no BD disco _SQLite_Exec($hBD_Mem, "DELETE FROM Tabela WHERE Idade < 18;") _SQLite_Exec($hBD_Disco, "DELETE FROM Tabela WHERE Idade < 18;") ; fecha tudo _SQLite_Close() _SQLite_Shutdown() Desta forma, mantemos os dois bancos de dados iguais e atualizados. E quaisquer consultas (SELECTs) devem ser feitos diretamente no BD em mem√≥ria para obter um ganho consider√°vel de velocidade! A outra possibilidade envolve n√£o manter os 2 (dois) bancos equiparados ou sincronizados, mas fazer as altera√ß√Ķes somente em mem√≥ria e depois de tudo pronto, descarregar o BD da mem√≥ria em disco. Este procedimento pode ser feito a qualquer momento, mas normalmente √© efetivado na sa√≠da do programa (final do script). Para tanto, infelizmente n√£o h√° um comando ou comandos que possam fazer isto rapidamente. Felizmente a partir da vers√£o 3.6.x do SQLite, foi implemntadado a API de Backup, que permite fazer c√≥pia do banco "on-the-fly" (com o banco aberto e operando). No f√≥rum americano, tem um t√≥pico sobre isto (cortesia do Belini que achou) e tamb√©m tem uma fun√ß√£o para fazer o backup: Se quiser ver o t√≥pico original = https://www.autoitscript.com/forum/topic/108151-sqlite-backup-api-wrapper/ Vou anexar aqui uma vers√£o modificada da original, j√° contendo as altera√ß√Ķes sugeridas pelos integrantes do f√≥rum naquele t√≥pico e com algumas modifica√ß√Ķes minhas tamb√©m. Para utilizar a fun√ß√£o de Backup √© bem simples. Segue exemplo: #include <Sqlite.au3> #include "sqlitebackup.au3" ; incializa SQLite _SQLite_Startup() ; Abre BD em mmória Local $hBD_Mem = _SQLite_Open() ; Abre BD em disco Local $hBD_Disco = _SQLite_Open(@ScriptDir & "\BancoDeDados.db") ; ... ; Faz a clonagem conforme as técnicas explicadas em post anterior ; ... ; faz as eventuais alterações SOMENTE na memória _SQLite_Exec($hBD_Mem, "UPDATE Tabela SET Estado = "SC" WHERE Codigo = 425;") ; faz as eventuais alterações SOMENTE na memória _SQLite_Exec($hBD_Mem, "DELETE FROM Tabela WHERE Idade < 18;") ; faz o backup do BD em memória de volta para o disco (recomendado ao final do script) _SQLite_Backup($hBD_Mem, @ScriptDir & "\BancoDeDadosCOPIA.db") ; fecha tudo _SQLite_Close() _SQLite_Shutdown() Mas conversando com um outro colega (meu ex-orientandor de mestrado) que √© DBA, ele me comentou que alguns engines DBs aproveitam comandos de manuten√ß√£o do banco (que exigem controle total sobre o mesmo) para efetivar algum tipo de c√≥pia. Assim, fui pesquisar na documenta√ß√£o do SQLite e o comando VACUUM, que serve para fazer uma lmpeza interna do banco, a partir da vers√£o 3.27 possui uma cl√°usula INTO que faz exatamente isto! Agora temos 2 (duas) op√ß√Ķes de salvar o banco de dados da mem√≥ria em disco. Faca os testes e veja qual a melhor (ou a mais r√°pida) que serve para o seu caso. A vantagem √© que n√£o precisa de uma fun√ß√£o externa. #include <Sqlite.au3> ; incializa SQLite _SQLite_Startup() ; Abre BD em mmória Local $hBD_Mem = _SQLite_Open() ; Abre BD em disco Local $hBD_Disco = _SQLite_Open(@ScriptDir & "\BancoDeDados.db") ; ... ; Faz a clonagem conforme as técnicas explicadas em post anterior ; ... ; faz as eventuais alterações SOMENTE na memória _SQLite_Exec($hBD_Mem, "UPDATE Tabela SET Estado = "SC" WHERE Codigo = 425;") ; faz as eventuais alterações SOMENTE na memória _SQLite_Exec($hBD_Mem, "DELETE FROM Tabela WHERE Idade < 18;") ; faz o backup do BD em memória de volta para o disco (recomendado ao final do script) aproveitando o comando interno VACUUM _SQLite_Exec($hBD_Mem, "VACUUM INTO '" & @ScriptDir & "\BancoDeDadosCOPIA.db'") ; fecha tudo _SQLite_Close() _SQLite_Shutdown() Quanto √† efici√™ncia de grava√ß√£o de volta em disco, temos que lembrar que estas fun√ß√Ķes, tanto a do SQLite como a do backup da SQLite, foram desenvolvidas tendo em mente uqe estes bancos estariam abertos, sendo utilizados por mais de 1 (um) usu√°rio, portanto durante o procedimento de fazer a c√≥pia, √© poss√≠vel que haja altera√ß√Ķes por parte de outros usu√°rios, sendo assim, a c√≥pia j√° nasceria desatualizada. A API do Backup prev√™ isso e se necess√°rio, recome√ßa a c√≥pia par refletir estas altera√ß√Ķes. Por√©m naturalmente que dependendo da quantidade de usu√°rios conectados ou das altera√ß√Ķes que est√£o sendo feitas, a c√≥pia pode demorar eternamente! Outro ponto interessante a ser verificado √© que o 5o (quinto) par√Ęmetro da fun√ß√£o de Backup √© o tamanho do bloco que deve ser copiado. E por tamanho do bloco, temos que olhar a estrutura interna do banco de dados para entendermos melhor este par√Ęmetro e o porque da fixa√ß√£o dele em 16. Todo banco de dados, internamente, possui as informa√ß√Ķes gravadas em blocos como se fossem p√°ginas de um livro. Dentro da p√°gina tem as v√°rias informa√ß√Ķes de v√°rios registros. O procedimento de backup faz c√≥pia de "x" folhas por vez (padr√£o de 16). Assim caso alguma dessas folhas sejam modificadas, ela recopia somente estas folhas que est√£o no bloco. Em teoria, quanto menor este bloco melhor, pois estar√≠amos reduzindo a rec√≥pia (se necess√°rio), por√©m ao reduzirmos o tamanho do bloco, tamb√©m aumentamos o tempo necess√°rio para copiar tudo. Assim, aumentar o tamanho do bloco faz com que a c√≥pia seja mais r√°pida, mas mais sujeita a rec√≥pias. Dependendo da situa√ß√£o, e eu estou imaginando que em 90% (ou mais) dos casos de SQLIte com AutoIt, os bancos s√£o praticamente exclusivos, n√£o tem nigu√©m al√©m do pr√≥prio script mexendo e tamb√©m n√£o h√° v√°rios scripts rodando simultameamente na rede. Se for este o seu caso, pode aumentar o nro de blocos para 256 para obter uma melhor performance na c√≥pia do banco ou at√© mesmo colocar o valor de -1, para que seja usada a velocidade m√°xima. Mas muito cuidado com estes par√Ęmetros. Eles devem ser cuidadosamente considerados em raz√£o do ambiente em que o banco de dados est√° sendo executado. _SQLite_Backup($hBD_Mem, $sCopiaBD, Default, Default, 256) ou _SQLite_Backup($hBD_Mem, $sCopiaBD, Default, Default, -1) SQLitebackup.au3
  8. o seu perfil foi visto por 4 pessoas nas √ļltimas 3 horas https://t.co/M9xujXAnJ5

  9. RT @rodrigofaber: A Riot Games e a Gillete anunciaram uma parceria muito interessante para os jogadores de League of Legends: a cada R$ 20…

  10. @jotadejorgee @rodrigofaber Vis√£o cria

  11. @gleisi Com vírgulas, til e crase?? Impossível

  12. Free VirtueMart 2.0.22 https://t.co/rb16wppmqd

  13. @diweirt Ué @omelete, como assim ?!?!

  14. RT @brunnosarttori: "Se eleito, nosso ministério será técnico." O Ministro da educação: https://t.co/2YQ6g4pFrA

  15. @izzynobre No canada eles n√£o curtem um churras n√£o?

  16. @pedrodoria Agora é isso na republiqueta das bananas. Uma ex atriz e atividade, aceita por período de testes um car… https://t.co/YmIbZwQBX9

  17. Fiz testes usando a primeira op√ß√£o e foi super r√°pido depois abri o banco de dados original no DB Browser for SQLite.exe e realmente ele permaneceu inalterado ou seja funcionou usando a c√≥pia na mem√≥ria e muitas vezes mais r√°pido que antes, agora preciso apenas melhorar a velocidade de cria√ß√£o do banco de dados quando os n√ļmeros s√£o sorteados, estou gravando linha por linha vc tem alguma sugest√£o de como armazenar e gravar v√°rias de uma vez s√≥ ou outra solu√ß√£o para diminuir o tempo de cria√ß√£o do banco de dados?
  18. Criar e ler um banco de dados SQlite

    Para clonar o banco de dados em mem√≥ria, tem v√°rias op√ß√Ķes. Todas d√° no mesmo, mas vc escolhe a melhor. Op√ß√£o 1 (a mais r√°pida): #include <Sqlite.au3> ; inicializa SQLite _SQLite_Startup() Local $hBD_Mem = _SQLite_Open() ; importa os dados _SQLite_Exec($hBD_Mem, "ATTACH DATABASE '" & @ScriptDir & "\BancoDeDados.db' as Original;") _SQLite_Exec($hBD_Mem, "CREATE TABLE Dados AS SELECT * FROM Original.Dados;") _SQLite_Exec($hBD_Mem, "DETACH DATABASE Original;") ; fecha tudo _SQLite_Close($hBD_Mem) _SQLite_Shutdown() Op√ß√£o 2 (a intermedi√°ria), precisa saber a estrutura do banco. √Č √ļtil quando vc precisa mudar a estrutura ou precisa pegar apenas alguns campos: #include <Sqlite.au3> ; inicializa SQLite _SQLite_Startup() Local $hBD_Mem = _SQLite_Open() ; importa os dados _SQLite_Exec($hBD_Mem, "ATTACH DATABASE '" & @ScriptDir & "\BancoDeDados.db' as Original;") _SQLite_Exec($hBD_Mem, "CREATE TABLE IF NOT EXISTS Dados (Numeros TEXT);") _SQLite_Exec($hBD_Mem, "INSERT INTO Dados SELECT * FROM Original.Dados;") _SQLite_Exec($hBD_Mem, "DETACH DATABASE Original;") ; fecha tudo _SQLite_Close($hBD_Mem) _SQLite_Shutdown() Op√ß√£o 3 (a mais lenta), mas √© a que permite mostrar alguma coisa tipo uma barra de progresso. √ötil quando a tabela √© muito grande. #include <Sqlite.au3> ; inicializa SQLite _SQLite_Startup() Local $hBD_Mem = _SQLite_Open() Local $hBD_Disco = _SQLite_Open(@ScriptDir & "\BancoDeDados.db") If @error Then ConsoleWrite("Erro na abertura do banco de dados" & @CRLF) Exit EndIf ; seção que carrega a tabela em memória (array) Local $aConsulta, $nLinhas, $nColunas SplashTextOn("", "Inicializando banco de dados...", 600, 100, -1, -1, 1 + 32, "", 24) Local $nResultado = _SQLite_GetTable2d($hBD_Disco, "SELECT * FROM Dados;", $aConsulta, $nLinhas, $nColunas) Sleep(1000) SplashOff() ; importa os dados If $nResultado = $SQLITE_OK Then Local Enum $DB_NUMEROS ProgressOn("Atenção!", "Carregando banco de dados...", "0%") _SQLite_Exec($hBD_Mem, "CREATE TABLE IF NOT EXISTS Dados (Numeros TEXT);") For $nIndice = 1 to $nLinhas ProgressSet($nIndice / $nLinhas * 100, Round($nIndice / $nLinhas * 100, 2) & '%') _SQLite_Exec($hBD_Mem, 'INSERT INTO Dados (Numeros) VALUES ("' & $aConsulta[$nIndice][$DB_NUMEROS] & '");') Next ProgressSet(100, '100%') Sleep(250) ProgressOff() EndIf ; fecha tudo _SQLite_Close($hBD_Mem) _SQLite_Close($hBD_Disco) _SQLite_Shutdown()
  19. RT @CatarinaKarem: https://t.co/CFay5LITCH

  20. @manimal o que eu preciso √© clonar o banco de dados para mem√≥ria e fazer altera√ß√Ķes nele apenas na mem√≥ria tamb√©m, n√£o preciso gravar mais nada fisicamente depois que ele estiver carregado na mem√≥ria por√©m preciso substituir os n√ļmeros sorteados em todo banco de dados que estiver na mem√≥ria o outro bd ser√° aberto f√≠sicamente quando precisar fazer altera√ß√Ķes e o que fizer ser√° salvo nos 2 fisicamente mas isto √© fora da hora do sorteio, quando inicia o sorteio os 2 ser√£o fechados com todas altera√ß√Ķes que foram feitas e ser√° carregada uma c√≥pia do banco 2 apenas para conferencia dos n√ļmeros sorteados, ou seja terei 2 banco de dados sendo que um cont√©m os dados das cartelas que n√£o vendeu e o outro dados das vendidas a√≠ quando vou cadastrar cartelas abro os dois fisicamente e fa√ßo altera√ß√Ķes neles, quando inicia o sorteio os dois s√£o fechados e preciso carregar as informa√ß√Ķes do banco 2 na mem√≥ria para conferir os n√ļmeros que forem sendo sorteados sendo que preciso substituir o n√ļmero sorteado por " | " de todo banco de dados mas apenas na mem√≥ria, vc pode postar um exemplo de como usa o seu banco de dados na mem√≥ria?
  21. Criar e ler um banco de dados SQlite

    Entendi a quest√£o da mem√≥ria, mas da√≠ n√£o tem jeito de fazer isso diretamente. Vc tr√° que criar um "clone" do banco em mem√≥ria e importar o conte√ļdo do BD em disco e a partir da√≠ trabalhar s√≥ com o da mem√≥ria. E se necess√°rio, fazer as altera√ß√Ķes em disco a medida que acontecem. Eu tenho um script assim. Ao iniciar, carrego todo o banco em mem√≥ria, da√≠ todas as consultas s√£o no BD em mem√≥ria e fa√ßo as grava√ß√Ķes (eventuais) em disco simultaneamente. E os cart√Ķes? Como s√£o divididos?
  22. @ClashofClansBRC Melhora isso ae

  23. @manimal eu gero as cartelas para serem vendidas antecipadamente e uso os dados que gravei em arquivo ini ou no caso agora no banco de dados para fazer a confer√™ncia de todas que foram vendidas e desta forma ningu√©m passa batido e nem precisa estar presente para concorrer por isto preciso j√° ter o banco de dados pronto sendo que no primeiro estar√£o as que n√£o formam vendidas pois apaga a linha dele toda vez que uma cartela √© cadastrada e nos outros dois tem todas que est√£o concorrendo sendoa n√ļmero 2 usada para conferir os n√ļmeros que sairam e a 3 apenas para consulta, eu sei que se eu n√£o indicar um banco de dados ele ser√° criado na mem√≥ria s√≥ que n√£o quero criar e sim carregar um que j√° tenho salvo no disco e depois usar ele na mem√≥ria sem salavar nada no disco. EDITADO: PM-S e PM-Q √© a identifica√ß√£o da cartela "S" √© quando tem 6 sorteios na mesma cartela e Q" √© quando tem apenas 4 sorteios o que vem depois √© n√ļmero daquela cartela e usando este c√≥digo tenho aceso a todos n√ļmeros contidos naquela cartela para poder fazer a confer√™ncia dela.
  24. Criar e ler um banco de dados SQlite

    Outra coisa. Quem fez o post americano tbm n√£o entendia muito de BD ou estava come√ßando. Em teoria, os passos s√£o: vc abre o BD cria as tabelas internas e os relacionamentos inclue, altera, exclue ou consulta dos dados Os passos 1 e 2 ocorrem apenas uma vez, j√° o 3o passo ocorre gradativamente. Por isto que eu me arrepio quando vejo o c√≥digo postado. If Not FileExists("database.db") Then $dbn = _SQLite_Open("database.db") _SQLite_Exec($dbn, "CREATE TABLE Dados (Numeros);") For $i = 1 To 10 $dados = "PM-S" & $i & "=02 05 06 08 15 20 23 26 28 30 35 36 38 43 45 47 52 54 55 56 66 68 71 74 75 PM-Q" & $i & " 10" $sql = "INSERT INTO Dados VALUES('" & $dados & "');" ;_Base_Execute($sql) _SQLite_Exec($dbn, $sql) Next Else $dbn = _SQLite_Open("database.db") EndIf Para come√ßo de conversa, qual a diferen√ßa entre as linhas de abertura do BD com o _SQLite_Open? Se n√£o existe o arquivo f√≠sico, abre o banco! E se existe, abre o banco? N√£o se deve confundir a abertura e cria√ß√£o do BD com sua manuten√ß√£o. Eu faria assim: ; seção de abertura do BD $dbn = _SQLite_Open("database.db") _SQLite_Exec($dbn, "CREATE TABLE IF NOT EXIST Dados (Numeros TEXT);") ; seção de inclusão de dados For $i = 1 To 10 $dados = "PM-S" & $i & "=02 05 06 08 15 20 23 26 28 30 35 36 38 43 45 47 52 54 55 56 66 68 71 74 75 PM-Q" & $i & " 10" $sql = "INSERT INTO Dados VALUES('" & $dados & "');" _SQLite_Exec($dbn, $sql) Next Observe: a cl√°sula IF NOT EXIST no comando CREATE TABLE (assim cria somente se a tabela n√£o existir, evitando que a tabela seja zerada toda vez) o tipo TEXT para defini√ß√£o do campo Numeros. Apesar de opcional, √© sempre importante colocar. Neste caso, o BD seria aberto, criado se necess√°rio o arquivo f√≠sico e a(s) tabela(s) internas. Em um segundo momento, os dados seriam inclu√≠dos. Claro que olhando para o script, os dados seriam inclusos sempre, por isso que a inclus√£o s√≥ poderia acontecer em um script separado para alimentar o BD inicialmente (recomendado) ou uma condi√ß√£o que permitisse a inser√ß√£o dos dados na tabela apenas uma √ļnica vez. ; seção de abertura do BD $dbn = _SQLite_Open("database.db") _SQLite_Exec($dbn, "CREATE TABLE IF NOT EXIST Dados (Numeros TEXT);") Local $aRegistro ; verifica se tem alguma coisa no BD _SQLite_QuerySingleRow($dbn, "SELECT COUNT(Numeros) FROM Dados;", $aRegistro) If $SQLITE_OK and not $aRegistro[0] Then ; se não existir NENHUM cartão, insere os dados ; seção de inclusão de dados For $i = 1 To 10 $dados = "PM-S" & $i & "=02 05 06 08 15 20 23 26 28 30 35 36 38 43 45 47 52 54 55 56 66 68 71 74 75 PM-Q" & $i & " 10" $sql = "INSERT INTO Dados VALUES('" & $dados & "');" _SQLite_Exec($dbn, $sql) Next EndIf Ok, agora temos um procedimento adequado para criar e inserir os dados (se necess√°rio). Para criar um BD em mem√≥ria basta mudar a linha $dbn = _SQLite_Open("database.db") para $dbn = _SQLite_Open() Por√©m, da√≠ todos os dados colocados no BD desaparecer√£o quando e se o programa fechar ou a m√°quina desligar/reiniciar, etc Em compensa√ß√£o, as opera√ß√Ķes s√£o super r√°pidas. Mas eu acho que a sua cartela pode ser desdobrada em campos menores. Seguindo o post anterior, me explique tbm o que s√£o os nros? PM-S 1,2,3, etc - o que √©? = 02 05 06 08 etc - imagino que s√£o os nros sorteados na cartela PM-Q 1,2,3, etc - o que √©? Pensei numa ideia maluca aqui, vamos ver se vinga ;)
  25. Criar e ler um banco de dados SQlite

    Que pena que perdemos as msgs anteriores, mas fazer o que... Queria entender um pouco mais sobre esta quest√£o de "gerar os cart√Ķes" que totalizariam 2 milh√Ķes de linhas. Estes cart√Ķes j√° est√£o gerados? Est√£o em um arquivo INI, isso? E vc quer importar para um BD? Se for assim, o procedimento de leitura do INI e grava√ß√£o no BD vc j√° tem. Ser√° demorado? Provavelmente, mas como vc mesmo disse, √© uma opera√ß√£o que pode ser feita "off-line", ou seja, o cliente nunca vai saber que aconteceu. Vc j√° vai chegar com o BD pronto para ele. Mas a minha pergunta √© exatamente essa! √Č necess√°rio gravar todos estes cart√Ķes antecipadamente? Como funciona um bingo na pr√°tica? Fa√ßa de conta que vc n√£o tem nenhum cart√£o gerado. Primeira vez que vc entrou num bingo. S√£o gerados quantos cart√Ķes? Ficam gravados porque? PS. Quanto √† d√ļvida t√©cnica do BD em mem√≥ria, basta n√£o utilizar nenhum par√Ęmetro no comando _SQLite_Open, da√≠ o BD √© gerado em mem√≥ria.
  26. Fui apagar a √ļltima mensagem que postei e acabei apagando o t√≥pico acidentalmente, vou postar aqui o √ļltimo script j√° com as fun√ß√Ķes que eu queria fazer quando criei o t√≥pico pois talvez seja √ļtil para outros que precisem da mesma coisa e aproveitando j√° deixo mais uma d√ļvida de como seria para carregar na mem√≥ria um arquivo .bd do disco e depois fazer todas altera√ß√Ķes necess√°rias durante o tempo que estiver usando sem salvar no disco. #include <SQLite.au3> #include <array.au3> Global $hQuery, $aRow, $sMsg, $sSql, $dados_linha Global $BASE_DB, $cod_cartela, $sorteado, $retarr _SQLite_Startup(@ScriptDir & "\sqlite3.dll") If Not FileExists("database.db") Then $dbn = _SQLite_Open("database.db") _SQLite_Exec($dbn, "CREATE TABLE Dados (Numeros);") For $i = 1 To 10 $dados = "PM-S" & $i & "=02 05 06 08 15 20 23 26 28 30 35 36 38 43 45 47 52 54 55 56 66 68 71 74 75 PM-Q" & $i & " 10" $sql = "INSERT INTO Dados VALUES('" & $dados & "');" ;_Base_Execute($sql) _SQLite_Exec($dbn, $sql) Next Else $dbn = _SQLite_Open("database.db") EndIf $cod_cartela = ' PM-S2002 ' $aResult = _SearchDatabase($cod_cartela); Procurando linha que tem o código da cartela (mostra apenas a linha que tem o código da cartela) If UBound($aResult) > 1 Then $dados_linha = $aResult[1][0]; guardar para gravar nas outras duas _SQLite_Exec($dbn, "DELETE FROM Dados WHERE Numeros= " & "'" & $aResult[1][2] & "'" & ";"); apaga a linha que tem o código da cartela _ArrayDisplay($aResult) Else MsgBox(4096, 'Sem informações', "Nenhuma informação foi encontrada!") EndIf $sorteado = Random(1, 75, 1) If $sorteado <= 9 Then $sorteado = " 0" & $sorteado & " " Else $sorteado = " " & $sorteado & " " EndIf _SQLite_Exec($dbn, "UPDATE Dados set Numeros= replace(numeros, '" & $sorteado & "', ' | ') where Numeros like '%" & $sorteado & "%'"); troca todos números por " | " $aResult = _SearchDatabase(" | "); Procurando linha que tem " | " (mostra todas as linha que tiveram os dados trocados) If UBound($aResult) > 1 Then _ArrayDisplay($aResult) _SQLite_Close() _SQLite_Shutdown() Func _SearchDatabase($sString) Local $sql, $sSql, $aTables, $aResult, $iState Local $tmp1, $tmp2 $sql = "SELECT Numeros, ""Dados"" AS ""table"", rowid FROM ""Dados""" $sSql = "SELECT * FROM (" & $sql & ") WHERE Numeros LIKE '%" & $sString & "%';" $iState = _SQLite_GetTable2d($dbn, $sSql, $aResult, $tmp1, $tmp2) If $iState <> $SQLITE_OK Then Return SetError(@error, 0, $iState) Else Return $aResult EndIf EndFunc ;==>_SearchDatabase
  27. RT @morrempordentro: https://t.co/dWytcHrKQv

  1. Load more activity
×