Ir para conteúdo
Marcos Vilela Alves

Conexao.open "OraOLEDB" nao funciona sem a fonte de dados windows

Recommended Posts

Boa tarde.

trabalho no desenvolvimento e suporte de um sistema VB6 de uma grande empresa.

a empresa visa migrar a versao do oracle, de 11 para 12.

 

agora acontece o seguinte.
usava-se uma Conexao_Externa.Open "Provider=MSDAORA; Data Source=XxXxX;  User ID=XXXxXX; Password=XxXxX;

esse provider não funciona mais e descobriu-se a solucao:

Conexao_Externa.Open "OracleConn.Provider=OraOLEDB.Oracle;" & Mid(STRINGCONEC, InStr(STRINGCONEC, ";") + 1), USER, PWD

 

porém essa solucao gerou outro problema.

a conexao acontece e tudo que deveria ser calculado, é.

a falha é que para que ela aconteça, é preciso inserir uma fonte de dados no windows para conexao.

 

eu nao localizei na internet, nem a razão da obrigatoriedade da fonte de dados, nem uma forma de burlar, ou utilizar da programação para tal.

 

é possível?

 

a necessidade de utilizar da programação ou de alguma outra regra junto ao oracle, é o fato de ser mais 400 máquinas que terão que ser ajustadas de início.

 

alguem sabe ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, Marcos Vilela Alves disse:

Boa tarde.

trabalho no desenvolvimento e suporte de um sistema VB6 de uma grande empresa.

a empresa visa migrar a versao do oracle, de 11 para 12.

 

agora acontece o seguinte.
usava-se uma Conexao_Externa.Open "Provider=MSDAORA; Data Source=XxXxX;  User ID=XXXxXX; Password=XxXxX;

esse provider não funciona mais e descobriu-se a solucao:

Conexao_Externa.Open "OracleConn.Provider=OraOLEDB.Oracle;" & Mid(STRINGCONEC, InStr(STRINGCONEC, ";") + 1), USER, PWD

 

porém essa solucao gerou outro problema.

a conexao acontece e tudo que deveria ser calculado, é.

a falha é que para que ela aconteça, é preciso inserir uma fonte de dados no windows para conexao.

 

eu nao localizei na internet, nem a razão da obrigatoriedade da fonte de dados, nem uma forma de burlar, ou utilizar da programação para tal.

 

é possível?

 

a necessidade de utilizar da programação ou de alguma outra regra junto ao oracle, é o fato de ser mais 400 máquinas que terão que ser ajustadas de início.

 

alguem sabe ajudar?

Oi Marcos, poderia por gentileza postar a mensagem do erro?

Compartilhar este post


Link para o post
Compartilhar em outros sites
10 minutos atrás, Marcos Vilela Alves disse:

image.png.8b66cf58460920a7c85d1f4227c1536a.png

A mensagem é essa. Nome da fonte de dados não encontrado e nenhum driver padrão especificado

Você já instalou o drive compativél com o seu sistema operacional? Essa mensagem está relacionado a isso também.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim. a questão que cheguei depois de um dia de pesquisa foi justamente essa questão.

o drive está instalado. se eu coloco a fonte de dados ODBC no windows, a conexão acontece e efetua todas as contas perfeitamente.

quando não tenho a fonte de ODBC a conexão não acontece.

eu queria uma forma de burlar isso. e forcar o VB se conectar com o oracle sem passar pela fonte de dados utilizando o OracleConn.provider e isso parece impossível. :(

ja revirei o google. até agora não localizei uma possível solução.

 

pensei em passar a stringConnect direto  no data Source , porém não aceita, uma vez que o nome da Source fica muito longo

Compartilhar este post


Link para o post
Compartilhar em outros sites
11 minutos atrás, Marcos Vilela Alves disse:

Sim. a questão que cheguei depois de um dia de pesquisa foi justamente essa questão.

o drive está instalado. se eu coloco a fonte de dados ODBC no windows, a conexão acontece e efetua todas as contas perfeitamente.

quando não tenho a fonte de ODBC a conexão não acontece.

eu queria uma forma de burlar isso. e forcar o VB se conectar com o oracle sem passar pela fonte de dados utilizando o OracleConn.provider e isso parece impossível. :(

ja revirei o google. até agora não localizei uma possível solução.

 

pensei em passar a stringConnect direto  no data Source , porém não aceita, uma vez que o nome da Source fica muito longo

Encontrei alguns tópicos bacana, que creio que poderá te ajudar, se não funcionar me avise para poder ir contribuindo com alguma informação.

 

https://social.msdn.microsoft.com/Forums/pt-BR/58d74f77-87e6-409d-8fac-d0538eb332ab/fonte-de-dados-odbc?forum=vsvbasicpt

 

https://msdn.microsoft.com/pt-br/library/ms345157(v=sql.120).aspx?f=255&MSPPError=-2147217396&cs-save-lang=1&cs-lang=vb#code-snippet-2

Compartilhar este post


Link para o post
Compartilhar em outros sites
24 minutos atrás, Marcos Vilela Alves disse:

Muito obrigado. vou analisar os tópicos sugeridos. 

Valew, se conseguir resolver, dá um feedback. Estou as ordens. Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Gustavo2503
      Eu estou criando uma classe que cria modais usando React, eu preciso criar um modal dentro de um modal, para isso, eu quero chamar a mesma função dentro dela mesma. O modal é criado, mas o problema é que ele não abre, abre o modal principal (#modal-1), mas não abre o sub modal (#modal-2), veja como ficou meu código:
      index.html
      <!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Modal</title> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet"> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script> <script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script> <script src="https://unpkg.com/babel-standalone@6.15.0/babel.min.js"></script> <script src="js/modal.js" type="text/babel"></script> <link rel="stylesheet" href="css/modal.css"> </head> <body> <div align="center"> <h1>Modal</h1> </div> <button type="button" data-modal="modal-1">Open Modal</button> <div id="modal-content"></div> <script type="text/babel"> const contentSub = [ <h2>Title SubModal 1</h2>, <p>SubModal</p>, <small>Rodapé submodal 1</small> ]; const idSub = "modal-2"; const content = [ <h2>Title 1</h2>, <section> <button type="button" data-modal="modal-2">Open SubModal</button> <Modal id={idSub} content={contentSub}/> </section>, <small>Rodapé 1</small> ]; const id = "modal-1"; ReactDOM.render( <Modal id={id} content={content}/>, document.getElementById('modal-content') ); </script> </body> </html> js/modal.js
      class Modal extends React.Component{ constructor(props) { super(props); this.id = this.props.id; this.backgroudColorHeader = this.props.backgroudColorHeader === undefined ? 'rgba(103, 117, 240, 1)' : this.props.backgroudColorHeader; this.textColorHeader = this.props.textColorHeader === undefined ? '#fff' : this.props.textColorHeader; this.backgroudColorBody = this.props.backgroudColorBody === undefined ? 'rgba(255, 255, 255, 1)' : this.props.backgroudColorBody; this.textColorBody = this.props.textColorBody === undefined ? '#000' : this.props.textColorBody; this.backgroudColorFooter = this.props.backgroudColorFooter === undefined ? 'rgba(103, 117, 240, 1)' : this.props.backgroudColorFooter; this.textColorFooter = this.props.textColorFooter === undefined ? '#fff' : this.props.textColorFooter; this.borderRadius = this.props.borderRadius === undefined ? '8px' : this.props.borderRadius; this.content = this.props.content === undefined ? [<h2>header content</h2>, <p>body content</p>, <p>footer content</p>] : this.props.content; this.size = this.props.size === undefined ? 3 : this.props.size; } closeModal = () => { $('#'+this.id).removeClass("show"); $('body').removeClass("overflow-hidden"); }; render(){ $(`[data-modal]`).click( function () { var id = $(this).attr("data-modal"); var el = document.getElementById(id); $(el).addClass("show"); $('body').addClass("overflow-hidden"); }); var background, text; background = this.backgroudColorHeader; text = this.textColorHeader; const transparencyBackgroundHeader = background.substring(background.length-2,background.length-1) -.1; const backgroundColorHeader = `${background.substring(0,background.length-2)}${transparencyBackgroundHeader})`; const styleColorHeader = { backgroundColor: backgroundColorHeader, color: text, borderBottom: `1px solid ${background}` }; background = this.backgroudColorBody; text = this.textColorBody; const styleColorBody = { backgroundColor: background, color: text }; background = this.backgroudColorFooter; text = this.textColorFooter; const transparencyBackgroundFooter = background.substring(background.length-2,background.length-1) -.1; const backgroundColorFooter = `${background.substring(0,background.length-2)}${transparencyBackgroundFooter})`; const styleColorFooter = { backgroundColor: backgroundColorFooter, color: text, borderTop: `1px solid ${background}` }; const styleBorderRadius = {borderRadius: this.borderRadius}; const eDivision = ['h', 'b', 'f']; const eContent = this.content; var div = []; for (var i=0;i<eContent.length;i++){ const part = eDivision[i].replace('h', 'header').replace('b', 'body').replace('f', 'footer')+"-modal"; const closeModal = i === 0 ? <span onClick={this.closeModal} className="close-modal"><i className="material-icons">close</i></span> : "" ; var style; if (i===0) style = styleColorHeader; else if (i===1) style = styleColorBody; else style = styleColorFooter; div.push(<div key={i+1} className={part} style={style}> {closeModal} {eContent[i]} </div>); } const eSize = this.size; const s = ['s', 'm-s', 'm', 'm-l', 'l']; const size = s[eSize-1]; const classModal = (size !== "s" && size !== "m-s" && size !== "m" && size !== "m-l" && size !== "l") ? 'modal-modal modal-m' : "modal-modal modal-"+size; return <div id={this.id} className={classModal}> <div className="overflow-modal"> <div className="container-modal" style={styleBorderRadius}> {div} </div> </div> </div>; } }  
    • Por Gui2000
      Meu nome é Guilherme e Sou iniciante.
       
      Bom estou criando esse código com struct, por que estou aprendendo na faculdade atualmente e preciso de ajuda. Pois uma parte do meu código, ao eu passar como parâmetro um vetor para que eu possa usar na minha função IMC,  ele fala que tem um erro nela e eu não sei o que é...
       
      CÓDIGO COM PROBLEMA:
      #include <stdio.h>
      typedef struct
          {
                 char nome[10];
                 float altura;
                 float peso;
                 char cpf[12];
                 char sexo[10];
                }Dados;
      void imc(Dados x);
      char consulte[12];
      void imc(Dados x[1])
      {
          int i,c;
          for(i=0;i<=1;i++)
          {
          if (consulte==x.cpf)
          {
              if(x.peso<18.5)
              {
                  printf("Baixo do peso.");
              }
              else
                  {
                      if((x.peso>=18.5) && (x.peso<25))
                      {
                          printf("Peso adequado.");
                      }
                      else{
                          if((x.peso>=25) && (x.peso<30))
                          {
                              printf("Sobrepeso.");
                          }
                          else
                          {
                              if(x.peso>=30)
                              {
                                  printf("Obesidade.");
                              }
                          }
                      }
                  }
          }
      }
      }
      int main ()
      {
          int i;
          char verdadeiro[10];
          Dados pessoas[1];
          for(i=0;i<=1;i++)
          {
              fflush(stdin);
              printf("Digite o nome da %i pessoa: ",i);
              scanf("%s", &pessoas.nome);
              fflush(stdin);
              printf("Digite a altura da %d pessoa: ",i);
              scanf("%f", &pessoas.altura);
              fflush(stdin);
              printf("Digite o cpf da %d pessoa: ",i);
              scanf("%s", &pessoas.cpf);
              fflush(stdin);
              printf("Digite o peso da %d pessoa: ",i);
              scanf("%f", &pessoas.peso);
              fflush(stdin);
              printf("Digite o sexo da %d pessoa: ",i);
              scanf("%s", &pessoas.sexo);
              fflush(stdin);
          }
          do
          {
              printf("Digite o nome do cpf da pessoa que você deseja ver o peso:");
              scanf("%s", &consulte);
              imc(pessoas[1]);
              printf("Você quer continuar? Digite[S/N]");
              scanf("%s", &verdadeiro);
          }
          while (verdadeiro!="N");
          return 0;
      }
       
       
    • Por Claudia França
      Prezados há dias consegui chegar no fim do projeto e, agora resta apenas corrigir o erro que ocorro no fim da transação. "Atualizar informações de pagamento. "
       Eu tenho aqui a doc. Mas não seu exatamente o que alterar no código para corrigir isso. E preciso de ajuda,
       
      https://www.userede.com.br/desenvolvedores/pt/produto/e-Rede#documentacao-3ds
       
      function updatePaymentAPI($apikey, $secret, $callid, $currencyCode,$total, $subtal){
          $time = time();
          $query_string = "apikey=".$apikey;
          $resource = "payment/info/".$callid;
          $body = "{\"updateInfo\":[{\"payInfo\":{\"reason\":\"ProductionKey Test\",
          \"avsResponseCode\":\"Y\",\"total\":".$total.",\"currencyCode\":\"".$currencyCode."\",
          \"eventStatus\":\"Success\",\"eventType\":\"Authorize\"}},{\"orderInfo\":{\"currencyCode\":\"".$currencyCode."\",
          \"discount\":0,\"eventType\":\"Confirm\",\"giftWrap\":0,\"misc\":0,
          \"reason\":\"Order_placed\",\"shippingHandling\":0,\"subtotal\":".$subtal.",\"tax\":0,\"total\":".$total."}}]}";
          $certificatePath = 'cert.pem';
          $privateKey = 'key_9e082920-8ec4-441a-8cfa-588b0829d326.pem';
          //Hash for x-pay-token
          $token = $time.$resource.$query_string.$body;
          $hashtoken = "xv2:".$time.":".hash_hmac('sha256', $token, $secret); //X-PAY-TOKEN String
          //$url = "https://api.visa.com/wallet-services-web/".$resource."?".$query_string;
          $url = "https://api.visa.com/wallet-services-web/".$resource."?".$query_string;
          updatePaymentLog("=========================================\n\n");
          updatePaymentLog("CallID : ".$callid."\n");
          updatePaymentLog("URL : ".$url."\n\n");
          updatePaymentLog("Update Payment Request Parameters : \n");
          updatePaymentLog($body);
          //Header
          $header = (array("X-PAY-TOKEN: ".$hashtoken, "Accept: application/json", "Content-Type: application/json","X-FRAME-OPTIONS: SAMEORIGIN"));
          $ch = curl_init();
          curl_setopt($ch, CURLOPT_URL, $url);
          curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
          curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
          curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
          curl_setopt($ch, CURLOPT_SSLVERSION , 1);
          curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
          curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
          //curl_setopt($ch, CURLOPT_SSLCERT, $certificatePath);
          //curl_setopt($ch, CURLOPT_SSLKEY, $privateKey);
          curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
          curl_setopt($ch, CURLOPT_POSTFIELDS,$body);
          //getting response from server
          $response = curl_exec($ch);
          if(!$response) {
              die('Error: "' . curl_error($ch) . '" - Code: ' . curl_errno($ch));
          }
          $statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
          curl_close($ch);
          $json = "";
          $ret = array(
            'status' =>"",
            'data' => ""
          );
          if($statusCode == 200) { //If success => empty Object.
              $ret['status'] = 'success';
              updatePaymentLog("\nUpdate Payment Info called Successfully...\n");
          }else{ // Return Error Object
              $ret['status'] = 'fail';
              $ret['data'] = $response;
              updatePaymentLog("\nSomething Went Wrong....\n");
              $json = json_decode($response);
              $json = json_encode($json, JSON_PRETTY_PRINT);
          }
          updatePaymentLog("\nStatus Code : " . $statusCode ."\n");
          updatePaymentLog($json);
          updatePaymentLog("\n");
          echo json_encode($ret);
      }
      updatePaymentAPI($visaApiKey, $sharedSecret, $callid, $currencyCode, $total, $subtotal);
      ?>
       
       
       
       
       
    • Por Claudia França
      Pessoal estou com um problema para homologar um pagamento service.
       o resultado do Status deve ser sucessfull.
      Parte do codido do index.
      "

          $('#payButton').one('click', function(){
              var amount = $('input[name=amount]').val();
              var currency = $('[name=currency]').val();
              console.log(amount, currency);
              V.init( {
                  apikey: '<?php echo $visaApiKey ?>',
                  settings: {
                      //logoUrl: 'https://www.novachance.org.br/wp-content/uploads/2018/06/xLogo_INC.jpg.pagespeed.ic.QrM-Azm3n5.jpg',
                      locale: 'en_US',
                      displayName: 'Viva a Musica',
                      websiteUrl: 'https://www.vivaamusica.org.br',
                      customerSupportUrl: 'https://www.vivaamusica.org.br/contato',
                      dataLevel: 'FULL'
                  },
                  paymentRequest: {
                      currencyCode: currency,
                      total: amount,
                      merchantRequestId: 'you can send any value to API ang get it in callback',
                      orderId: 'you can send any value to API ang get it in callback',
                      description: 'any order description if needs'
                  }
              });
                V.on('payment.success', function(payment) {
                  console.log('Visa success:', JSON.stringify(payment));
                  $('#succesOverlay').show();
                  $.ajax({
                      type: 'POST',
                      url: 'mailer.php',
                      data: {json: JSON.stringify(payment)},
                      dataType: 'json',
                      success: function(data){
                        console.log('Ajax success');
                        console.log(data);
                        location = 'thanks.php';
                      },
                      error: function(jqXHR, textStatus, errorThrown) {
                        console.log('Ajax error:');
                        console.log(textStatus, errorThrown);
                      }
                  });
              });
              V.on('payment.cancel', function(payment){
                  console.log('Canceled:', payment);
              });
              V.on('payment.error', function(payment, error){
                  console.log('Visa error:', payment, error);
              });
              $('.v-button').click();
          })
       
      "
       Chamada Json
       
      "
      "Customer": {
              "Name": "[$userFullName]"
          },
          "Payment": {
              "ServiceTaxAmount": 0,
              "Installments": 1,
              "Interest": 0,
              "Capture": false,
              "Authenticate": false,
              "Recurrent": false,
              "CreditCard": {
                  "CardNumber": "453211******1521",
                  "Holder": "Gama Gama",
                  "ExpirationDate": "08/2020",
                  "SaveCard": false,
                  "Brand": "Visa"
              },
              "Tid": "0319040817883",
              "ProofOfSale": "817883",
              "AuthorizationCode": "027795",
              "Wallet": {
                  "Type": "VisaCheckout",
                  "WalletKey": "1140814777695873901",
                  "Eci": 0
                  },
              
              "SoftDescriptor": "123456789ABCD",
              "Amount": 100,
              "ReceivedDate": "2018-03-19 16:08:16",
              "Status": "eventStatus",
              "IsSplitted": false,
              "ReturnMessage": "Operation Successful",
              "ReturnCode": "4",
              "PaymentId": "e57b09eb-475b-44b6-ac71-01b9b82f2491",
              "Type": "CreditCard",
              "Currency": "BRL","en_US",
              "Country": "BRA","USA",
              
              
          
      "updateInfo":  {
               "payInfo": {
               "reason": "Pagamento","Payment",
               "avsResponseCode": "Y",
               "Amount": 91.00,
               "currencyCode": "USD",
               "eventStatus": "Success",
               "eventType": "Authorize",
               "PaymentId": "e57b09eb-475b-44b6-ac71-01b9b82f2491",
              
               }
      }
           
            }
      }
      {
       
       
      "
       
       
      O pessoal da empresa me fala que tenho que enviar o CallID gerado ( não sei como faço isso) e fazer a chamado do alteração de evento quando a transação for sucesso.
       
      Pensei em criar um aquivo payment.php mas pelo que li no manual necessariamente, não eh necessário.
       
    • Por Wil_sf
      Olá pessoal. Estou desenvolvendo um pequeno site de vendas(apenas para aprendizagem, nada comercial) e me deparei com uma dúvida que está tirando meu sono kkk
      Fiz um esquema para que os produtos posam ser cadastrados e apareçam em uma pagina para a exibição, porém gostaria que quando o cliente clicasse na foto do produto seria aberta uma pagina com as descrições e detalhes do produto(da mesma forma que o Mercado Livre ou outro site de E-commerce).
       
      <table cellpadding="8" cellspacing="5" border="0" width="100%">
              <tr>
                <?php

                  $loopH = 3;
                  $sql = "SELECT id, produto, preco, descricao, foto FROM postagem";
                  $dados=mysqli_query($con, $sql);
                  $linha = mysqli_fetch_assoc($dados);
                  $total = mysqli_num_rows($dados);
                  $x = 1;
       
                  if($total > 0){
                    while($linha = mysqli_fetch_assoc($dados)){
                      if($x < $loopH){
                      $linha = $id[4];
                    $x++;
                ?>
       
                <td align="center" varign="top">
                  <a href="descricao_L.php"><img src="_imagens-posts/<?php echo $linha['foto']; ?>" width="365px" height="365px">
                  <h3> <?php echo $linha['produto'] ?> </h3>
                  <h4>R$: <?php echo $linha['preco'] ?></h4>
                  </a>
                </td>
              <?php }elseif($x = $loopH){
              ?>

                <td align="center" varign="top">
                  <a href="descricao_L.php?perfil=$id"><img src="_imagens-posts/<?php echo $linha['foto']; ?>" width="365px" height="365px">
                  <h3> <?php echo $linha['produto'] ?> </h3>
                  <h4>R$: <?php echo $linha['preco'] ?></h4>
                  </a>
                </td>
              </tr>
              <tr>
              <?php $i = 0 ?>
              <?php }}} ?>
              </tr>
            </table>
       
      este é a tabela onde os produtos são exibidos(e apesar do código estar horrível essa parte está funcionando perfeitamente haha). bom, gostaria que alguém me desse uma luz, não sei o que devo fazer.
       
      Desde já, obrigado a todos do fórum.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.