Pinned Discussions
Forum Widgets
Recent Discussions
Code Page Formula Button
I have a formula button whose intended purpose is to check a box on the record (to start a pipeline) then redirect to a code page that is coded to pause, then check if a status field has changed, if not, pause again. If the field is changed it returns the user to the form originally launched from. I'm trying to cobble together different posts/search results as I haven't been able to find any direct examples of my need. This formula works to open the code page and passes the correct parameters for checking the status, but it doesn't check the box and thus the pipeline never runs and the page never closes. var text codePageID = "6"; // Replace with your actual code page ID var text recordID = ToText([Record ID#]); var text currentStatus = URLEncode([Charges Pipeline Status]); // Replace with your field's name var text url = URLRoot() & "db/" & AppID() & "?a=dbpage&pageid=" & $codePageID & "&rid=" & $recordID & "&initialStatus=" & $currentStatus; "<a style= \" text-decoration:none; background: #b4b55d; border-radius: 15px; color: #fff; display: inline-block; padding: 10px 10px 10px 10px; width: 100%; font-size: 14px; text-align: center;\" href='" & $url & "'>Create New Charges</a>" This formula correctly edits the checkbox but doesn't pass the status parameters (I do have the correct app token inserted in the field - replaced with [apptoken] here for reference: var text urlToExecute = URLRoot() & "db/" & Dbid() & "?a=API_EditRecord&apptoken=[apptoken]" & "&rid=" & [Record ID#] & "&_fid_12=true"; "<a style= \" text-decoration:none; background: #b4b55d; border-radius: 15px; color: #fff; display: inline-block; padding: 10px 10px 10px 10px; width: 100%; font-size: 14px; text-align: center;\" href='" & AppID() & "?a=dbpage&pageid=3" & "&url=" & URLEncode($urlToExecute) & "'>Create New Charges</a>" This is my attempt at trying to combine the 2 formulas above: var text codePageID = "6"; // Replace with your actual code page ID var text recordID = ToText([Record ID#]); var text currentStatus = URLEncode([Charges Pipeline Status]); // Replace with your field's name var text url = URLRoot() & "db/" & Dbid() & "?a=API_EditRecord&apptoken=pamm2bcsqv939bufwq8hwzvwx4" & "&rid=" & [Record ID#] & "&_fid_12=1" & AppID() & "?a=dbpage&pageid=" & $codePageID & "&rid=" & $recordID & "&initialStatus=" & $currentStatus; "<a style= \" text-decoration:none; background: #b4b55d; border-radius: 15px; color: #fff; display: inline-block; padding: 10px 10px 10px 10px; width: 100%; font-size: 14px; text-align: center;\" href='" & $url & "'>Create New Charges</a>" When I use the third formula, I get an error that says the XML file does not appear to have any style information associated with it and shows the following tree: <qdbapi> <action>API_EditRecord</action> <errcode>0</errcode> <errtext>No error</errtext> <rid>7</rid> <num_fields_changed>0</num_fields_changed> <update_id>1757601111721</update_id> </qdbapi> Here is the script for the code page: <script> // Configuration const recordId = new URLSearchParams(window.location.search).get('rid'); const initialStatus = new URLSearchParams(window.location.search).get('initialStatus'); const dbid = 'bvcwn2ues'; // <<< REPLACE WITH YOUR TABLE'S DBID const appToken = 'pamm2bcsqv939bufwq8hwzvwx4'; // <<< REPLACE WITH YOUR APP TOKEN IF NEEDED const statusFieldId = '40'; // <<< REPLACE WITH YOUR STATUS FIELD'S FID const checkInterval = 120000; // 120 seconds in milliseconds function checkStatus() { $.ajax({ url: window.location.origin + '/db/' + dbid + '?a=API_DoQuery&qid=1&options=csv&apptoken=' + appToken + '&query={' + recordId + '.EX.' + recordId + '}', type: 'GET', success: function(response) { const lines = response.trim().split('\n'); if (lines.length > 1) { const data = lines[1].split(','); const currentStatus = data[statusFieldId]; if (currentStatus !== initialStatus) { // Status has changed! Redirect to the updated record. window.location.href = window.location.origin + '/db/' + dbid + '?a=dr&rid=' + recordId; } else { // Status is the same. Pause and check again. console.log('Status has not changed. Checking again in ' + checkInterval / 120000 + ' seconds.'); setTimeout(checkStatus, checkInterval); } } else { console.log('Record not found or API error. Retrying...'); setTimeout(checkStatus, checkInterval); } }, error: function(xhr, status, error) { console.error('API Error: ' + status, error); setTimeout(checkStatus, checkInterval); } }); } // Start the check after a brief initial pause setTimeout(checkStatus, checkInterval); </script> I'm thinking I might need to add another const under the Configuration, but I just don't know enough to determine that. Or, I'm thinking that the structure of the button formula itself is where adjustments need to be made.Solved0likes16CommentsLink to Record in Outlook Pipeline
Hey Qrew, I have an app tracking employee safety reports. I have Pipeline emails that send out when a new report is submitted, when it's assigned to someone for follow up, and when that person has submitted the response. I need it to be a Pipeline email instead of a native notification because I need it to send as an email thread to everyone instead of to each person individually. I'm trying to add a link that says "Click here to open the record" in the email so the person it's been assigned to can open the form and modify the fields their role has access to. Can someone help me create that jinja code? I've tried to find it somewhere in the ether and can't find anything that's specific to what I need. Thank you!!Solved0likes2CommentsDisplay Summary Table in Related Child Records
How can I display a parent summary table report in each child record? The report, screenshot below, includes all subprojects (the child records) related to a project site (the parent). I desire this report in the child table to display the related subprojects.0likes3CommentsInterview form using multiple tables
Hey there. I'm trying to build a form that would be used during interviews with customers that represent ISPs or "networks." Each customer would be a new Network and that Network can have many Communities, Activities, Statistics, or Payments Plans associated with it. I'm running into several issues: When a network is new at the start of the interview, a record will not exist yet, so there cannot be a recordID yet. So, let's say an Interviewer enters information for Network X on page 1, then moves to page 2 to enter Communities affiliated with Network X. They would hit on the "Add Community" button page 2. A pop up opens but there isn't a network affiliated with the new Community record. I'm pretty sure I can get around this by making a rule or a button that forces the Network entry to be saved before moving to page 2. But I can't find a conclusive way to make a Save and Keep Working button and the default button is hidden at the end of the form. Let's say I save the network before moving to the next page. Now on Page 2 (Communities), if my interviewer hits a button to add Community, a pop up appears, they enter the information, and hit save. The pop up does not automatically redirect to the original interview form. It seems I would need to make a custom save button to do that. Is there a more efficient way to build a data entry form in Quickbase that involves multiple tables without needing to build a bunch of custom buttons? I feel that I might be missing something obvious here. Thank youSolved0likes5CommentsCode Page for User to Search And Return a Report Visual
I have the following Code page. I have successful code where the user inputs data into 2 fields and QuickBase data is returned. However, where I am struggling is instead of data being returned, a report being returned ideally or I have a formula URL field that can be returned but needs to be an iframe. <!DOCTYPE html> <html> <head> <title>Quickbase Data Retriever</title> </head> <body> <label for="inputField">Enter Record ID or Search Term:</label><br> <input type="text" id="inputField"><br><br> <button id="retrieveButton">Retrieve Data</button> <div id="result"></div> <script> document.getElementById('retrieveButton').addEventListener('click', function() { const inputValue = document.getElementById('inputField').value; const appDbId = 'XXXXXXXXXXX'; // Replace with your Quickbase App DBID const tableDbId = 'XXXXXXXX'; // Replace with your Quickbase Table DBID const targetFieldId = '6'; // THIS IS THE formula URL field const queryFieldId = '37'; // Replace with the FID of the field to query against const userToken = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; const apiUrl = `https://xxxxxxxxxxx.quickbase.com/db/${tableDbId}? a=API_DoQuery&query= {'${queryFieldId}'.EX.'${inputValue}'}&clist=${targetFieldId}&usertoken=${userToken}`; ****I have also tried report is qid 6 const apiURL='https://xxxxxxxxxxx.quickbase.com/db/${tableDbId}? qid=6&nv=1&v0= {'${queryFieldId}'.EX.'${inputValue}'} fetch(apiUrl) .then(response => response.text()) // Quickbase returns XML .then(xmlStr => { // Parse the XML string into a DOM object const parser = new DOMParser(); const xmlDoc = parser.parseFromString(xmlStr, "application/xml"); // Extract the value inside <possible_url> const statusNode = xmlDoc.querySelector("possible_url"); if (statusNode) { document.getElementById('result').textContent = statusNode.textContent; } else { document.getElementById('result').textContent = "No field found in response."; } }) .catch(error => { console.error('Error:', error); document.getElementById('result').textContent = 'An error occurred during the API call.'; }); When I call the formula URL field I get this so 1) is there a way instead of the URL being retrieved to have it in a iframe so that the report visual is shown? 2) Is there a way to instead filter the report for example: const apiURL='https://xxxxxxxxxxx.quickbase.com/db/${tableDbId}? qid=6&nv=1&v0= {'${queryFieldId}'.EX.'${inputValue}'} (this URL does work: https://xxxxxxxxxxxxxxxx.com/nav/app/xxxxxxxx/table/xxxxxxxx/action/q?qid=6&nv=1&v0=Minnie123 (Minnie123 would be the user's input to filter/query based of) and then have visual show in the html? The report does have a filter of "ask the user"0likes1CommentCode Page for User to Search And Return Value
Hi, I have the following Code page. Basically I want the user to enter in text and search. Then the result finds their input and matches with field id 256 and return field id 29. I will replace anything with a "XXXX". When the user searches they get "Target field not found in response." instead of the value. For knowledge the user should enter in "mickey.mouse" and 256 holds that value : When i simply put this in the URL I do get a response:https://XXXXX-XXXXX.quickbase.com/db/XXXXXX?a=API_DoQuery&query={%27256%27.EX.%27mickey.mouse%27}&clist=29 Thank you so much for helping me! <!DOCTYPE html> <html> <head> <title>Quickbase Data Retriever</title> </head> <body> <label for="inputField">Enter Record ID or Search Term:</label><br> <input type="text" id="inputField"><br><br> <button id="retrieveButton">Retrieve Data</button> <div id="result"></div> <script> document.getElementById('retrieveButton').addEventListener('click', function() { const inputValue = document.getElementById('inputField').value; const appDbId = 'XXXXXXXX'; // Replace with your Quickbase App DBID const tableDbId = 'XXXXXXX'; // Replace with your Quickbase Table DBID const targetFieldId = '29'; // Replace with the FID of the field to retrieve const queryFieldId = '256'; // Replace with the FID of the field to query against (e.g., Record ID#) const userToken = 'XXXXXXXXX'; // Replace with your Quickbase User Token or use API_Authenticate for a ticket // Construct the API_DoQuery URL const apiUrl = `https://XXXXXX-XXXXXXX.quickbase.com/db/${tableDbId}?a=API_DoQuery&query={'${queryFieldId}'.EX.'${inputValue}'}&clist=${targetFieldId}&usertoken=${userToken}`; fetch(apiUrl) .then(response => response.text()) // Quickbase API returns XML .then(str => (new window.DOMParser()).parseFromString(str, "text/xml")) .then(data => { const errcode = data.querySelector('errcode').textContent; if (errcode === '0') { const fieldNode = data.querySelector(`f[id="${targetFieldId}"]`); if (fieldNode) { const fieldValue = fieldNode.textContent; document.getElementById('result').textContent = `Retrieved Value: ${fieldValue}`; } else { document.getElementById('result').textContent = 'Target field not found in response.'; } } else { const errtext = data.querySelector('errtext').textContent; document.getElementById('result').textContent = `Error: ${errtext}`; } }) .catch(error => { console.error('Error:', error); document.getElementById('result').textContent = 'An error occurred during the API call.'; }); }); </script> </body> </html>Solved0likes6CommentsTransferring Field Data to Another Record
Hello, Is it possible for me to transfer quantity data on one record to another record? As an example, Record A has 10 laptops. Record B has 5 laptops. I would like to transfer 2 laptops from Record A to Record B. I've tried different methods, but I keep hitting a wall.0likes3CommentsXLSX import to 2 Linked Tables?
Is there an easy way to accomplish this? Say as an example: Table1 - LEAD_NAME, PHONE, CONTACT_NAME Table2 - LEAD_NAME, CALL_DATE, NOTES Table1 can link to many Table2 If I create an xlsx sheet with all the relevant fields, can I do a mass import of leads and or calls (together) with a single upload? Or two uploads might make more sense so it doesn't duplicate leads? LEAD1, 555-555-5555, Bob, 09/17/2025,"Good Call" LEAD1, 555-555-5555, Bob, 09/17/2025,"Bad Call" I am curious how the linking would work here. I assume a pipeline might be needed? but before going down that path I wanted to see if I am overlooking an easier way.0likes1Comment