Skip to main content
lic62282549
Participant
May 28, 2017
Question

coldfusion mobile app - connection to remote database server under cfclient tag

  • May 28, 2017
  • 1 reply
  • 3923 views

down votefavorite

I am writing cf mobile app and using cfclient tag. I am encountering issue with remote datasource connection and can’t get it resolve. From cfclient I am using “rooms” as my datasource string which is defined in administrator as data source. It is connecting to remote sql server. “Tblblogs” exist in rooms database, but under cfclient i get error that “No such table exist”. However, if I take same query [blgQ] that selects “tblblogs” outside cfclient, it works fine without issue. I am not sure why it is not making right datasource connection under cfclient (as defined in administrator)

<html >
  
<body>
  
<h2>Add Expense</h2>
  
<form >
  
<table >
  
<tr>
  
<td>Date:</td> <td><input type="date" id="dateTxt"></td>
  
</tr>
  
<tr>
  
<td>Amount:</td> <td><input type="number" id="amtTxt"></td>
  
</tr>
  
<tr>
  
<td>Description</td>
  
<td><input type="text" id="descTxt"></td>
  
</tr>
  
<tr>
  
<td colspan="2">
  
<button type="button" id="addBtn">Add</button>
  
</td>
  
</tr>
  
</table>
  
</form>

  
<h2>Expenses:</h2>
  
<table id="expList">
  
<tr>
  
<th>Date</th>
  
<th>Amount</th>
  
<th>Description</th>
  
</tr>
  
</table>
  
</body>
</html>

<script >
  document
.getElementById("addBtn").onclick = function(){
  addExpense
();
  
}
</script>


<!--- cfclient code starts here --->
<cfclient>
  
<cfset document.getElementById("expList").innerHTML =''>
  
<!--- on client side you do not need to pre-configure datasource --->
  
<cfset dsn = "rooms">
  
<cftry>

  
<!--- create database if not already created --->
  
<cfquery datasource="rooms">
  create table if not exists expenses (
  id integer primary key,
  expense_date integer,
  amount real,
  desc text
  )
  
</cfquery>

  
<!--- Get expense records from the table --->
  
<cfquery datasource="rooms" name="expenses">
  select * from expense order by expense_date desc
  
</cfquery>
  
<cfset alert(expenses.amount)>



  
<!--- Loop over expenses query object and display --->
  
<cfloop query="expenses">
  
<cfset var tmpDate = new Date(expense_date)>
  
<cfset addExpenseRow(expense_date,amount,desc)>
  
</cfloop>

  
<cfcatch type="any" name="e">
  
<cfset alert(e.message)>
  
</cfcatch>
  
</cftry>

  
<!--- Helper function to add epxpense row to HTML table --->
  
<cffunction name="addExpenseRow" >
  
<cfargument name="expense_date" >
  
<cfargument name="amt" >
  
<cfargument name="desc" >


  
<cfoutput >
  
<cfsavecontent variable="rowHtml" >
  
<tr>
  
<td>#dateFormat(expense_date,"mm/dd/yyyy")#</td>
  
<td>#amt#</td>
  
<td>#desc#</td>
  
</tr>
  
</cfsavecontent>
  
</cfoutput>

  
<cfset document.getElementById("expList").innerHTML += rowHtml>
  
</cffunction>

  
<!--- Called from JS script block in response to click event for addBtn --->
  
<cffunction name="addExpense" >
  
<cfset var tmpDate = new Date(document.getElementById("dateTxt").value)>
  
<cfset var amt = Number(document.getElementById("amtTxt").value)>
  
<cfset var desc = document.getElementById("descTxt").value>

  
<!--- TODO: Do data validation --->
  
<cftry>
  
<!--- Insert expense row into database table --->  
  
<cfquery datasource="rooms" result="result">
  insert into expense (expense_date,amount,desc) values(
  
<cfqueryparam cfsqltype="cf_sql_date" value="#tmpDate.getTime()#">,
  
<cfqueryparam cfsqltype="cf_sql_numeric" value="#amt#">,
  
<cfqueryparam cfsqltype="cf_sql_varchar" value="#desc#">
  )
  
</cfquery>

  
<cfcatch type="any" name="e">
  
<cfset alert(e.message)>
  
</cfcatch>
  
</cftry>


  
<!--- add the new expense row to HTML table --->
  
<cfset addExpenseRow(tmpDate,amt,desc)>
  
</cffunction>

</cfclient>

<cfquery datasource="rooms" name="blgQ">
  select * from tblblogs
  
</cfquery>
<cfdump var="#blgQ#"

>

This topic has been closed for replies.

1 reply

BKBK
Community Expert
Community Expert
June 3, 2017

The error message might just be correct. To verify, comment out all the code, except

<cfquery datasource="rooms" name="blgQ">
  select * from tblblogs
  
</cfquery>
<cfdump var="#blgQ#">

and run the same page.